1

Sparkデータフレームの単一の列にある ":" - > "_"のすべてのインスタンスを置き換えようとしています。私はこれをやろうとしている:Sparkデータフレームのすべての ":"を ":"に置き換えます。

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

しかし、私はエラーを取得しておいてください。

私はUDFで間違ったつもり
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 

答えて

7

おそらく、この列にはいくつかのヌルがあります。

試してみてください。

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

ます。またregexp_replace(col("newCol"), ":", "_")の代わりに、独自の機能

を使用することができます
関連する問題