如何为每行 rdd 生成哈希?(PYSPARK)

Mr *_* do 4 hash row rdd pyspark

正如问题中所指定的,我正在尝试为 RDD 的每一行生成一个哈希值。出于我的目的,我不能使用zipWithUniqueId()方法,对于 RDD 的每一行,我需要所有列的一个哈希值。

for row in DataFrame.collect():
    return hashlib.sha1(str(row))
Run Code Online (Sandbox Code Playgroud)

我知道这是最糟糕的方式,迭代到 rdd,但我是 pyspark 的初学者。然而问题是:我为每一行获得相同的哈希值。我尝试使用强抗碰撞散列函数,但它太慢了。有没有办法解决这个问题?提前致谢 :)

Dyl*_*ogg 6

查看pyspark.sql.functions.sha2(col, numBits),它返回 SHA-2 系列哈希函数(SHA-224、SHA-256、SHA-384 和 SHA-512)的十六进制字符串结果

从 Spark v1.5 开始可用

import pyspark.sql.functions as F
df2 = df.withColumn('my_col_hashed', F.sha2(F.col('my_col'), 256))
Run Code Online (Sandbox Code Playgroud)