2016-07-04 2 views
0

Ich erhalte und Fehler beim Aufruf von udf von innerhalb mitColumn in Spark mit Scala. Dieser Fehler tritt beim Erstellen mit SBT auf.Fehler beim Aufruf von udf von innerhalb mitColumn in Spark mit Scala

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" 
    } 

)

Ich erhalte den Fehler, das ist -

scala:58: No TypeTag available for String 
val getAuthId = udf((session_user_id:String) => { 

Es kompiliert richtig, wenn statt (session_user_id: String) I (session_user_id verwenden: Gibt es), aber nicht im laufenden Betrieb wie jeder wird in Spark nicht erkannt. Bitte lassen Sie mich wissen, wie Sie damit umgehen.

+0

Fehler oder nicht das macht keinen Sinn. Objekt der Klasse 'String' kann nicht' None' sein! – zero323

Antwort

1

Haben Sie versucht, explizit mit Ihren Typen zu sein?

udf[String, String]((session_user_id:String)... 
+0

Ja, ich versucht habe, ist explizit - val getAuthId = UDF [String, String] ((session_user_id: String) => if (session_user_id == None) .... der Fehler gleich ist - scala: 57 : Nein TypeTag verfügbar für String [Fehler] val getAuthId = udf [Zeichenfolge, Zeichenfolge] ((Sitzungsbenutzer_ID: Zeichenfolge) => if (Sitzungsbenutzer_ID == Keine) "- 1" –

+1

@preitamojha sind Sie sicher, dass Sie denselben Code ausführen Sie geben uns? Es scheint unwahrscheinlich, dass dies nicht funktioniert. Ich kann den Fehler nicht reproduzieren. – eliasah

Verwandte Themen