Можно ли заставить Spark UDF работать с массивом, который может быть None? - PullRequest
0 голосов
/ 23 апреля 2020

Как заставить этот код работать, когда массив может быть None:

def stringInArrayContains = udf((array: collection.mutable.WrappedArray[String], str: String) => array.filter(x => x.contains(str)).mkString(";"))

1 Ответ

1 голос
/ 23 апреля 2020

Этот UDF будет работать нормально, просто убедитесь, что он вызывается только для входов, которые не равны нулю:

.withColumn("result",when($"arr".isNotNull and $"string".isNotNull, stringInArrayContains($"arr","string"))))

, иначе обработайте нули внутри UDF:

def stringInArrayContains = udf((array: collection.mutable.WrappedArray[String], str: String) => if(array==null || str==null)  null else array.filter(x => x.contains(str)).mkString(";"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...