我有一个Int, Array[Int]
的DataFrame,其值为
+---+------+
| _1| _2|
+---+------+
| 1| [1]|
| 1| [2]|
| 2|[3, 4]|
+---+------+
我要返回的数据框
+---+------+------------------+
| _1| _2| _3|
+---+------+------------------+
| 1| [1]| [hash(1)]|
| 1| [2]| [hash(2)]|
| 2|[3, 4]|[hash(3), hash(4)]|
+---+------+------------------+
我最初尝试将DataFrame转换为数据集并映射数据集。但是,我无法使用MurmurHash3复制哈希。 简而言之,我无法复制https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/functions.scala#L2165-L2168。
关于如何进行的任何想法?
我乐于接受任何方法以获得期望的结果。
答案 0 :(得分:4)
使用transform
:
val df = Seq((1, Seq(1)), (1, Seq(2)), (2, Seq(3, 4))).toDF
df.selectExpr("*", "transform(_2, x -> hash(x)) AS _3").show
+---+------+--------------------+
| _1| _2| _3|
+---+------+--------------------+
| 1| [1]| [-559580957]|
| 1| [2]| [1765031574]|
| 2|[3, 4]|[-1823081949, -39...|
+---+------+--------------------+