簡體   English   中英

將函數應用於Spark DataFrame的每一行

[英]Apply function to each row of Spark DataFrame

我在Spark 1.3上。

我想將一個函數應用於數據幀的每一行。 此函數散列行的每一列並返回散列列表。

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

運行此代碼時出現NullPointerException。 我認為這與SPARK-5063有關

如果不使用嵌套映射,我無法想到實現相同結果的方法。

這不是SPARK-5063的一個實例,因為你沒有嵌套RDD轉換; 內部.map()正在應用於Scala Seq ,而不是RDD。

我的預感是數據集中的某些行包含空列值,因此當您嘗試計算null.hashCode時,某些col.hashCode調用會拋出NullPointerExceptions。 為了解決這個問題,您需要在計算哈希碼時考慮空值。

如果您在Java 7 JVM或更高版本( 源代碼 )上運行,則可以執行此操作

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM