Spark SQL - 选择嵌套数组值

时间:2015-10-01 02:04:28

标签: apache-spark-sql

我有一堆包含以下结构的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有什么办法吗?

0 个答案:

没有答案