将行中的每一列传递给Spark SQL中的哈希函数

时间:2018-11-26 11:31:19

标签: python apache-spark pyspark apache-spark-sql

我有一个包含N列的表,我想将它们全部连接到一个字符串列,然后对该列执行哈希。 I have found a similar question in Scala.

理想情况下,我想完全在Spark SQL内完成此操作,但是我尝试了HASH(*) as myhashcolumn,但是由于某些列有时为null,因此无法按预期进行此工作。

如果必须创建一个UDF并注册它才能实现此目的,则我需要使用Python而不是Scala,因为我所有其他代码都在Python中。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试下面的代码。

df.select([hash(col) for col in df.columns]).show()

此致

Neeraj

答案 1 :(得分:1)

您可以像下面这样在pyspark中进行操作(只需将输入列传递给函数):

{'left': P_collection_1, 'right': P_collection_2}
            | ' Combine' >> beam.CoGroupByKey()
            | ' ExtractValues' >> beam.Values()