gpt4 book ai didi

apache-spark - 将功能应用于Spark DataFrame的每一行

转载 作者:行者123 更新时间:2023-12-04 07:51:55 24 4
gpt4 key购买 nike

我使用的是Spark 1.3。

我想将一个函数应用于数据框的每一行。此函数对行的每一列进行哈希处理,并返回哈希表的列表。

dataframe.map(row => row.toSeq.map(col => col.hashCode))

运行此代码时,我收到NullPointerException。我认为这与 SPARK-5063有关。

我想不出不使用嵌套 map 就可以达到相同结果的方法。

最佳答案

这不是SPARK-5063的实例,因为您没有嵌套RDD转换。内部.map()应用于Scala Seq而不是RDD。

我的直觉是数据集中的某些行包含空列值,因此当您尝试评估col.hashCode时,某些null.hashCode调用会引发NullPointerExceptions。为了解决此问题,在计算哈希码时,您需要考虑空值。

如果您在Java 7 JVM或更高版本的JVM(source)上运行,则可以执行

import java.util.Objects
dataframe.map(row => row.toSeq.map(col => Objects.hashCode(col)))

或者,在Java的早期版本中,您可以执行
    dataframe.map(row => row.toSeq.map(col => if (col == null) 0 else col.hashCode))

关于apache-spark - 将功能应用于Spark DataFrame的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com