我在使用Scala从Spark中的withColumn中调用udf时收到并出错。 使用SBT构建时会发生此错误。
val hiveRDD = sqlContext.sql("select * from iac_trinity.ctg_us_clickstream")
hiveRDD.persist()
val trnEventDf = hiveRDD
.withColumn("system_generated_id", getAuthId(hiveRDD("session_user_id")))
.withColumn("application_assigned_event_id", hiveRDD("event_event_id"))
val getAuthId = udf((session_user_id:String) => {
if (session_user_id != None){
if (session_user_id != "NULL"){
if (session_user_id != "null"){
session_user_id
}else "-1"
}else "-1"
}else "-1"
}
)
我收到错误 -
scala:58: No TypeTag available for String
val getAuthId = udf((session_user_id:String) => {
当我使用(session_user_id:String)代替(session_user_id:String)时,它正确编译,但在运行时失败,因为在Spark中无法识别Any。 请让我知道如何处理这个问题。
答案 0 :(得分:1)
您是否尝试过明确表达自己的类型?
{{1}}