结构的 Spark Dataframe 数组

Spark Dataframe Array of Struct

我在数据框中有一个列,它是一个数组[总是单个项目],看起来像这样:

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

我这辈子都想不出如何从中获取 _value,并将其转化为字符串...

假设 x 是数据帧,我试过:

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

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

请问如何得到 _value 中保存的值的漂亮字符串?

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))