我正在自學 scala(以便將其與 Apache Spark 一起使用),并想知道是否有某種方法可以在 Spark DataFrame 上連接一系列轉換。例如,假設我們有一個轉換串列
l: List[(String, String)] = List(("field1", "nonEmpty"), ("field2", "notNull"))
和一個 Spark DataFrame
df,這樣期望的結果將是
df.filter(df("field1") =!= "").filter(df("field2").isNotNull).
我在想也許這可以使用函陣列合或串列折疊或其他東西來完成,但我真的不知道如何。任何幫助將不勝感激。
謝謝!
uj5u.com熱心網友回復:
是的,這是完全可能的。但這取決于你真正想要的,我的意思是,Spark 提供了Pipelines,它允許組合你的轉換并創建一個可以序列化的管道。您可以創建自定義轉換器,這里是一個示例。您可以在自定義轉換中包含“過濾器”階段,稍后您將能夠使用,例如,在 Spark 結構化流中。
其他選項是使用 Spark 資料集并使用轉換api。這似乎更實用、更優雅。
Scala 有很多可能性來創建您自己的 api,但請先看看這些方法。
uj5u.com熱心網友回復:
是的,您可以折疊現有的Dataframe. 您可以將所有列保留在串列中,而不必打擾其他中間型別:
val df =
???
val columns =
List(
col("1") =!= "",
col("2").isNotNull,
col("3") > 10
)
val filtered =
columns.foldLeft(df)((df, col) => df.filter(col))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/447335.html
