我知道UDF
s是Spark的完整黑盒,並且不會嘗試優化它。但使用Column
類型及其功能列在:(https://spark.apache.org/docs/2.1.0/api/scala/index.html#org.apache.spark.sql.Column)
使功能「符合」Catalyst Optimizer
?。UDF's vs Spark sql vs列表達式性能優化
例如,UDF
通過添加1
到現有列
val addOne = udf((num: Int) => num + 1)
df.withColumn("col2", addOne($"col1"))
相同功能來創建一個新的列,使用Column
類型:
def addOne(col1: Column) = col1.plus(1)
df.withColumn("col2", addOne($"col1"))
或
spark.sql("select *, col1 + 1 from df")
將性能之間有任何差異恩他們?
我不知道如果數據集選擇是爲在你的例子'df.as [Int] .map(num =>(num,num + 1))中,UDF方法不好[ –
]對不起,延遲@DanieldePaula和@YosiDahari,我把一個大的'UDF'轉換爲只使用'Column'類型,我確實看到了一些改進。我仍然不知道它將如何處理大數據。 – vdep