我有一堆包含以下结构的Parquet文件:
data
|-- instance: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- dataset: array (nullable = true)
| | | |-- element: struct (containsNull = true)
| | | | |-- item: array (nullable = true)
| | | | | |-- element: struct (containsNull = true)
| | | | | | |-- id: string (nullable = true)
| | | | | | |-- name: string (nullable = true)
| | | | |-- name: string (nullable = true)
| | |-- id: long (nullable = true)
我希望使用Spark SQL进行一些数据操作。
我不能做像
这样的事情data.select("data.instance.dataset.name")
或
data.select("data.instance.dataset.item.id")
因为涉及嵌套数组而我收到错误:
Array index should be integral type, but it's StringType;
我能理解为什么会这样,但是在Spark SQL中遍历嵌套结构的方法是什么?
我可以将它全部读取/反序列化到我自己的班级然后处理它,但它是a)慢而且b)不允许使用像spark笔记本等东西的人使用数据。 / p>
使用Spark SQL有什么办法吗?