![](/img/trans.png)
[英]How can I loop through all the rows of a Spark dataframe and apply a function to each row?
[英]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.