gpt4 book ai didi

apache-spark - Spark是否支持结构数组的列扫描修剪

转载 作者:行者123 更新时间:2023-12-05 06:14:11 25 4
gpt4 key购买 nike

我在以下模式中有一个名为“household”的数据框:

root
|-- country_code: string (nullable = true)
|-- region_code: string (nullable = true)
|-- individuals: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- individual_id: string (nullable = true)
| | |-- ids: array (nullable = true)
| | | |-- element: struct (containsNull = true)
| | | | |-- id_last_seen: date (nullable = true)
| | | | |-- type: string (nullable = true)
| | | | |-- value: string (nullable = true)
| | | | |-- year_released: integer (nullable = true)

我可以使用以下代码查找至少包含一台 2018 年之后发布的设备的家庭

val sql = """
select household_id
from household
where exists(individuals, id -> exists(id.ids, dev -> dev.year_released > 2018))
"""
val v = spark.sql(sql)

它运行良好,但是,我发现 spark 查询规划器无法修剪不需要的列。该计划表明 Spark 必须读取嵌套结构的所有列

用 spark 2.4.5 和 3.0.0 测试了这个,得到了相同的结果。

只是想知道 Spark 是否支持或将添加对结构数组的列扫描修剪的支持?

最佳答案

是的。

要激活嵌套模式修剪,您必须在上下文中设置该选项:

spark.conf.set("spark.sql.optimizer.nestedSchemaPruning.enabled", "true")

在这里检查这个答案: Efficient reading nested parquet column in Spark

关于apache-spark - Spark是否支持结构数组的列扫描修剪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62998107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com