Bry*_*zer 8 apache-spark apache-spark-sql
我在Spark 1.3上.
我想将一个函数应用于数据帧的每一行.此函数散列行的每一列并返回散列列表.
dataframe.map(row => row.toSeq.map(col => col.hashCode))
Run Code Online (Sandbox Code Playgroud)
运行此代码时出现NullPointerException.我认为这与SPARK-5063有关.
如果不使用嵌套映射,我无法想到实现相同结果的方法.
这不是SPARK-5063的一个实例,因为你没有嵌套RDD转换; 内部.map()被应用于Scala Seq,而不是RDD.
我的预感是数据集中的某些行包含空列值,因此col.hashCode当您尝试评估时,某些调用会抛出NullPointerExceptions null.hashCode.为了解决这个问题,您需要在计算哈希码时考虑空值.
如果您在Java 7 JVM或更高版本(源代码)上运行,则可以执行此操作
import java.util.Objects
dataframe.map(row => row.toSeq.map(col => Objects.hashCode(col)))
Run Code Online (Sandbox Code Playgroud)
或者,在早期版本的Java上,您可以这样做
dataframe.map(row => row.toSeq.map(col => if (col == null) 0 else col.hashCode))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10189 次 |
| 最近记录: |