import org.apache.spark.sql.functions._
val df = sc.parallelize(Seq(
("Xxx", "yyy"),
("xxx", "yyy"),
("aaa", "yyy")
)).toDF("c1", "c2")
df.withColumn("hashName", hash(concat($"c1", $"c2")))//.show(false)
Итак, какие очевидные улучшения? Символ-разделитель между обоими и прописными или строчными буквами перед ha sh. А если не очищено, замените все пробелы и нечетные символы разделителем.
Так что лучше:
df.withColumn("preHashName", lower(trim(concat($"c1", lit("|"), $"c2"))))
.withColumn("hashName", hash(lower(concat($"c1", lit("|"), $"c2")))).show(false)
Если этого не сделать, значит, в другом ответе AN OTHER может быть таким же, как ANO THER с точки зрения хеширования.
Вывод:
+---+------+-----------+-----------+
|c1 |c2 |preHashName|hashName |
+---+------+-----------+-----------+
|Xxx|y yy |xxx|y yy |907198499 |
|xxx|yyy |xxx|yyy |-1167597858|
|aaa|yyy |aaa|yyy |495090835 |
+---+------+-----------+-----------+