Хэшируйте содержимое массива типа columntype [Int] индивидуально - PullRequest
0 голосов
/ 23 января 2019

У меня есть DataFrame Int, Array[Int] со значениями

+---+------+
| _1|    _2|
+---+------+
|  1|   [1]|
|  1|   [2]|
|  2|[3, 4]|
+---+------+

Я хочу вернуть DataFrame

+---+------+------------------+
| _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.

Любые идеи о том, как действовать?

Я открыт для любого метода, чтобы получить желаемый результат.

1 Ответ

0 голосов
/ 23 января 2019

Использование 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...|
+---+------+--------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...