Передача значений строк из Spark df в функции

#scala #apache-spark #apache-spark-sql

#scala #apache-spark #apache-spark-sql

Вопрос:

 val someDF = Seq(
  (8, "abc"),
  (64, "sdf"),
  (-27, "yui")
).toDF("number", "word")

def numberValidation(numberValidation:Any): Boolean=
numberValidation match{
case int :Integer => true
case _ => false}

def wordValidatoin(wordValidation:Any): Boolean=
wordValidation match{
case str: String => true
case _ => false}
  

Мне нужно передать каждую строку с соответствующими значениями указанным функциям.
Значение столбца number в первой строке = 8, которое передается в numbervalidation, а столбец word в первой строке — abc, передаваемый в wordValidatoin

Ответ №1:

Используйте spark UDF и измените свой метод, как показано ниже :

   val numberValidation = udf((numberValidation: Any) => {
     numberValidation match{
    case int :Integer => true
    case _ => false
    }
  })
  
 

val wordValidatoin = udf((wordValidation:Any)): =>{
    wordValidation match{
    case str: String => true
    case _ => false
    }
})
  

и проверьте с помощью DF, как показано ниже :

 someDF
.withColumn("checkNum",numberValidation($"number"))
.withColumn("checWord",wordValidatoin($"word"))
.show