Spark Dataframe Массив структур - PullRequest
0 голосов
/ 20 мая 2019

У меня есть столбец в кадре данных, который является массивом [всегда одного элемента], который выглядит следующим образом:

root
 |-- emdaNo: array (nullable = true)
 |    |-- element: struct (containsNull = false)
 |    |    |-- _value: string (nullable = true)
 |    |    |-- id: string (nullable = true)

Я не могу на всю жизнь понять, как получить значение _ из него, в строку ...

Предполагая, что x является фреймом данных, я пробовал:

x.select($"arrayName._value") // Yields ["myStringHere"]

и

x.select($"arrayName[0]._value") // Errors

Как мне получить хорошую строку значения, содержащегося в _value, пожалуйста?

1 Ответ

1 голос
/ 20 мая 2019
case class Element(_value: String, id: String)
val df = Seq(Array(Element("foo", "bar"))).toDF("emdaNo")
df.select(element_at($"emdaNo._value", 1) as "_value").show()

Выход:

+------+
|_value|
+------+
|   foo|
+------+

В качестве альтернативы (и до Spark 2.4)

df.select($"emdaNo._value"(0))

или

df.select($"emdaNo._value".getItem(0))
...