Spark 使用分区过滤器读取镶木地板与完整路径

Imm*_*ick 5 apache-spark parquet apache-spark-sql pyspark

我在 hdfs 示例中有一个分区镶木地板数据: hdfs://cluster/stage/data/datawarehouse/table=metrics_data/country=india/year=2020/month=06/day=30/hour=23/<part-files .镶木地板>

我想了解哪种是读取数据的最佳方式:

df = Spark.read.parquet(“hdfs://cluster/stage/data/datawarehouse/table=metrics_data/country=india/year=2020/month=06/day=30/”).where(col('小时') == "23")

或者

df = Spark.read.parquet(“hdfs://cluster/stage/data/datawarehouse/table=metrics_data/country=india/year=2020/month=06/day=30/hour=23”)

我想更多地了解性能和其他优势(如果有)。

dsk*_*dsk 2

这非常简单,我们在读取文件时要做的第一件事就是过滤掉不必要的列,使用df = df.filter()它甚至可以在读入内存之前过滤掉数据,高级文件格式如 parquet,ORC 支持概念预测下推更多在这里,这使您能够比加载完整数据更快地读取数据。