从hdfs阅读时如何跳过 parquet 柱?

3pmvbmvn  于 2022-12-09  发布在  HDFS
关注(0)|答案(1)|浏览(201)

我们都知道 parquet 是面向列的,所以我们可以只得到我们想要的列,并减少IO。
但是,如果 parquet 文件存储在HDFS中,我们是否应该先下载整个文件,然后在本地应用列过滤器?
例如,如果我们使用spark从HDFS/Hive中读取一个 parquet 列:

spark.sql("select name from wide_table")

我们还是得下载整个 parquet 文件,对吗?
或者,也许有一种方法可以在网络传输之前过滤列?

uemypmqf

uemypmqf1#

实际上,SparkSQL的一个特性“predicate pushdown“将尝试使用列过滤器来减少spark处理的信息量,从技术上讲,整个hdfs块仍然被读入内存,但它使用智能逻辑只返回相关的结果,这通常在物理计划中调用。您可以通过在查询中使用.explain()来查看该特性是否被使用(并非所有版本的hdfs都支持此功能)。

相关问题