1

Ich versuche, alle Instanzen von ":" -> "_" in einer einzigen Spalte eines Spark-Datenrahmens zu ersetzen. Ich versuche, dies zu tun mit:Ersetzen Sie alle ":" durch "_" in Spark Datenrahmen

val url_cleaner = (s:String) => { 
    s.replaceAll(":","_") 
} 
val url_cleaner_udf = udf(url_cleaner) 
val df = old_df.withColumn("newCol", url_cleaner_udf(old_df("oldCol"))) 

Aber ich erhalte immer die Fehlermeldung:

SparkException: Job aborted due to stage failure: Task 0 in stage 25.0 failed 4 times, most recent failure: Lost task 0.3 in stage 25.0 (TID 692, ip-10-81-194-29.ec2.internal): java.lang.NullPointerException 

Wo bin ich falsch in der UDF gehen?

Antwort

7

Wahrscheinlich haben Sie in dieser Spalte einige Nullen.

Versuchen:

val urlCleaner = (s:String) => { 
    if (s == null) null else s.replaceAll(":","_") 
} 

Sie auch regexp_replace(col("newCol"), ":", "_") statt eigene Funktion

verwenden können
Verwandte Themen