从嵌套数组和结构spark中提取值

时间:2019-09-03 19:08:55

标签: apache-spark hadoop apache-spark-sql

我有一个类似以下的架构。我想知道火花中选择元件座并驱动然后将其铸成绳子的最佳方法是什么。我正在Spark 1.6的数据框中读取此内容。

|-- cars: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- carId: string (nullable = true)
 |    |    |-- carCode: string (nullable = true)
 |    |    |-- carNumber: string (nullable = true)
 |    |    |-- features: array (nullable = true)
 |    |    |    |-- element: struct (containsNull = true)
 |    |    |    |    |-- seat: string (nullable = true)
 |    |    |    |    |-- drive: string (nullable = true)

cars.features作为json中的car_features输出:

"cars_features":[[{"seat":"Auto","drive":"Manual"}]]

我试图选择“自动”并将其放入数据框列,然后选择“手动”并放入另一列。

当前尝试将整个结构返回为:

+-------------------+
|car_features       |
+-------------------+
|  [[Auto,Manual]]  |
+-------------------+

col("car.features").getItem(0).as("car_features_seat")

1 个答案:

答案 0 :(得分:0)

我不得不两次钻入数组:

paddingBottom

这将提取“自动”