问题
apachespark作业因spark用户定义函数非定型行为无限期挂起举个例子说明此函数
scalaval转换orUDF=(注释Col:String){#UDF定义}val翻译Column=udf
if you call这个UDF使用带ColumnAPI并应用滤波转换数据FrameUDF可多次执行记录并影响应用性能
scalaval翻译DF=dfcolumn
因果
确定式UDF有时行为非确定性,执行重复引用视UDF定义而定数据Frame使用UDF添加列使用带ColumnAPI后对结果应用变换(过滤器)数据Frame.
求解
UDFs必须确定性优化后,重复引用可消除或函数可比查询中多引用次数
更好的选项是缓存数据Framewhere你使用UDFif数据Frame内含大量数据, 并写入Parquet格式文件最优性
可使用下列代码缓存结果:
scalaval翻译DF=dfcolumn