我想从另一个基于Java的数据库资源中获取给定列值的值。
我遵循了以下过程
//sample method
object testObject extends Serializable {
def method1(key: String) = Database[String,String] {
return dbdetails
}
val data : Database[String,String] = method1.testObject(x)
val getUdf = udf((value: String) => data.get(value))
val resultingDF = df.withColumn("test", lit(getUdf(col("value"))))
说,如果数据库中的get返回字符串值“ abc”,我希望它存储在数据框中。但是,在按如下所示调用UDF时会引发错误。
Caused by: java.lang.RuntimeException: org.apache.spark.SparkException: Task not serializable.
我尝试使用可扩展序列化,但是错误仍然存在。
答案 0 :(得分:0)
尝试将您的方法定义为对象:
object testObject extends Serializable {
val method1(key: String) = Database[String,String] {
return dbdetails
}