выберите столбец данных, используя udf - PullRequest
1 голос
/ 01 июня 2019

Я использую spark-shell и хочу создать фрейм данных (df2) из ​​другого фрейма данных (df1), используя select и udf.Но возникает ошибка, когда я хочу показать df2 ==> df2.show (1)

  var df1 = sql(s"select * from table_1")
  val slice = udf ((items: Array[String]) => if (items == null) items 
  else {
     if (items.size <= 20)
       items
     else
       items.slice(0, 20)
  })
  var df2 = df1.select($"col1", slice($"col2"))

, а схема df1:

scala> df1.printSchema
root
  |-- col1: string (nullable = true)
  |-- col2: array (nullable = true)
  |    |-- element: string (containsNull = true)

 scala> df2.printSchema
 root
   |-- col1: string (nullable = true)
   |-- UDF(col2): array (nullable = true)
   |    |-- element: string (containsNull = true)

ошибка:

 Failed to execute user defined function($anonfun$1: (array<string>) => array<string>)

1 Ответ

1 голос
/ 01 июня 2019

Использовал Seq [String] вместо Array [String] в udf, и проблема решена.

...