当前位置: 首页 > 知识库问答 >
问题:

单独散列类型数组[Int]的内容

池阳伯
2023-03-14

我有一个Int的DataFrame,Array[Int]的值为

+---+------+
| _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)]|
+---+------+------------------+

我最初试图将数据帧转换成数据集并映射数据集。但是,我无法用MurmurHash3重现散列。总之我是无法再现https://github . com/Apache/spark/blob/master/SQL/core/src/main/Scala/org/Apache/spark/SQL/functions . Scala # l 2165-l 2168。

对如何进行有什么想法吗?

我对任何方法都持开放态度,以获得我想要的结果。

共有1个答案

柴飞星
2023-03-14

使用转换

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...|
+---+------+--------------------+
 类似资料:
  • 这些内建函数不(更多)关心它们左侧参数的类型。 switch Note: 该内建函数从 FreeMarker 2.3.23 版本开始可用。 这是 switch-case-default 指令 的基本内联(表达式)版本。它的通用版本就像 matchedValue?switch(case1, result1, case2, result2, ... caseN, resultN, defaultRes

  • 问题内容: 从一个包含三列数据的文本文件中,我希望能够从第一列中的值等于中定义的值的所有三列中获取一个数据。然后,我想将数据切片放入一个名为(我正在使用 Python 2.7 )的新数组中 以上返回: 问题答案: 您的变量的形状可能不正确: 如果使用这种方法读取列数据,就会发生以下情况: 也许你可以简单地使用 代替。 (PS您的代码看起来像它的犹豫不决它是否还是。我认为它只是一个错字。)

  • 问题内容: 可以散列吗? 例如,我知道元组的散列是可能的: 但是可以对a进行哈希处理吗? 可能的解决方案: 这里是对列表哈希的非常深入的解释。 问题答案: 就试一试吧: 所以,你可以得到的,并因为是不可变的,你不能做到这一点,并因为他们是可变的。

  • 问题内容: 我有一个包含多个列表作为其元素的列表 如果我使用内置的set函数从此列表中删除重复项,则会收到错误消息 我正在使用的代码是 TopP是一个列表,就像上面的eg一样 set()的这种用法是否错误?还有其他方法可以对以上列表进行排序吗? 问题答案: 集要求其项是可 哈希的 。在Python预定义的类型中,只有不可变的类型(例如字符串,数字和元组)是可哈希的。可变类型(例如列表和字典)不可散

  • 我在使用OpenAPI 3定义可重用架构组件时遇到问题,这将允许包含多种类型的数组。每个项目类型都继承自同一个父类,但具有特定的子属性。这在SwaggerHub上的视图中似乎可以正常工作,但示例视图没有正确显示数据。 太长,读不下去了有没有办法在OpenAPI 3中定义包含不同对象类型的数组?

  • 问题内容: 我想将我的int值拆分为数字。例如,如果没有。是542,结果应为5,4,2。 我有2个选择。1)将int转换为String,然后使用getCharArray(),我可以使用单独的字符,然后将它们转换回int值。 2)将int转换为String,而不将其转换为char数组,对其进行迭代并获取所有数字。 还有其他解决方法。如果没有,哪个选项会很快? 问题答案: