只是想知道Parquet谓词下推是否也适用于S3,而不仅仅是HDFS。特别是如果我们使用Spark(非EMR)。
进一步的解释可能会有所帮助,因为它可能涉及了解分布式文件系统。
答案 0 :(得分:6)
我自己也在想这个,所以我只是测试了一下。我们使用 EMR群集和 Spark 1.6.1 。
结果:
我会在有空的时候添加有关测试和结果的更多详细信息。
答案 1 :(得分:2)
是。过滤器下推不依赖于底层文件系统。它只取决于spark.sql.parquet.filterPushdown
和过滤器的类型(并非所有过滤器都可以按下)。
答案 2 :(得分:1)
这是我为s3a工作推荐的按键
spark.sql.parquet.filterPushdown true
spark.sql.parquet.mergeSchema false
spark.hadoop.parquet.enable.summary-metadata false
spark.sql.orc.filterPushdown true
spark.sql.orc.splits.include.file.footer true
spark.sql.orc.cache.stripe.details.size 10000
spark.sql.hive.metastorePartitionPruning true
spark.speculation false
spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version 2
spark.hadoop.mapreduce.fileoutputcommitter.cleanup.skipped true
答案 3 :(得分:0)
Spark使用HDFS镶木地板和s3库所以相同的逻辑工作。 (在spark 1.6中,他们为平面图案拼花文件添加了更快的快捷方式)
答案 4 :(得分:0)
最近我在Spark 2.4上进行了尝试,似乎Pushdown谓词可以在s3上使用。
这是spark sql查询:
explain select * from default.my_table where month = '2009-04' and site = 'http://jdnews.com/sports/game_1997_jdnsports__article.html/play_rain.html' limit 100;
这是输出的一部分:
PartitionFilters: [isnotnull(month#6), (month#6 = 2009-04)], PushedFilters: [IsNotNull(site), EqualTo(site,http://jdnews.com/sports/game_1997_jdnsports__article.html/play_ra...
明确指出PushedFilters不为空。
注意:已使用表是在AWS S3之上创建的