Sco*_*ell 4 python apache-spark apache-spark-sql pyspark
我有一个包含N列的表,我想将它们全部连接到一个字符串列,然后对该列执行哈希。我在 Scala 中发现了类似的问题。
理想情况下,我想完全在 Spark SQL 内部完成此操作,我已经尝试过HASH(*) as myhashcolumn,但由于几列有时为空,我无法按预期完成这项工作。
如果我必须创建一个 UDF 并注册它才能实现这一点,我需要使用 Python 而不是 Scala,因为我的所有其他代码都使用 Python。
有任何想法吗?
小智 5
如果你想根据 DataFrame 的所有列动态生成哈希,可以使用:
import pyspark.sql.functions as F
df.withColumn("checksum", F.xxhash64(*df.schema.names))
说明:
df.schema.names是一个包含 DataFrame 中所有列名称的列表df。使用 a*将此列表扩展到它包含的元素中。然后,您可以将元素传递给xxhash64(对于 64 位哈希值)和hash(对于 32 位哈希值)等函数。
| 归档时间: | 
 | 
| 查看次数: | 6384 次 | 
| 最近记录: |