使用Scala从Spark中的withColumn中调用udf时出错

时间:2016-07-04 02:21:28

标签: scala apache-spark udf

我在使用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。 请让我知道如何处理这个问题。

1 个答案:

答案 0 :(得分:1)

您是否尝试过明确表达自己的类型?

{{1}}