Как преобразовать один ряд в другой в наборе искровых данных - PullRequest
0 голосов
/ 31 октября 2018

Например, у меня есть одна таблица со схемой, подобной этой:

id int,
name string,
score int

Я хочу конвертировать в

id int,
attribute struct<name string,score int>

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Можно использовать функцию "struct":

val originalDF = List((1, "any", 10)).toDF("id", "name", "score")
val transformed = originalDF.select($"id", struct($"name", $"score").alias("attribute"))
transformed.printSchema()

Выход:

root
 |-- id: integer (nullable = false)
 |-- attribute: struct (nullable = false)
 |    |-- name: string (nullable = true)
 |    |-- score: integer (nullable = false)
0 голосов
/ 31 октября 2018

Вы можете написать как:

вам нужно написать UDF так:

val toArray = udf((value1 : String, value2: String) => List(value1,value2))

ваша логика должна выглядеть так:

val df1 = df.withColumn("attribute",toArray(dff.col("name"),dff.col("score")))

df1.select("id","attribute").show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...