Sha*_*kar 0 scala apache-spark apache-spark-sql udf
我有一个 Spark SQL DF,我在其中尝试调用一个 UDF [我使用 Spark SQL 创建的udf。
val udfName = udf(somemethodName)
val newDF = df.withColumn("columnnew", udfName(col("anotherDFColumn"))
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用另一个存储为valsomemethodName 内部的 DF,但 DF 为空。
仅当我在 . 中使用 where 子句时才会发生这种情况newDF。
我错过了什么吗?是否无法在 UDF 方法中使用另一个变量/方法?
或者我必须对广播做些什么?目前我正在本地运行它,而不是在集群中。
是否无法在 UDF 方法中使用另一个变量/方法
当且仅当该变量/方法可以序列化时,才有可能- UDF 是一个必须序列化并分发给执行器的闭包。
Dataframe无法序列化(它是指向其他分布式数据的指针,因此没有逻辑方法可以将其序列化而不将其收集到驱动程序内存中),因此显示为当您尝试使用 UDF 时。null
您可能需要join某个键上的两个数据帧,然后使用从连接的数据帧中获取列的 UDF(或标准转换)。
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |