首页 > 解决方案 > 带分区过滤器与完整路径的火花读取镶木地板

问题描述

我在 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('hour ') == "23")

或者

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

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

标签: apache-sparkpysparkapache-spark-sqlparquet

解决方案


如果您的目录/文件层次结构很大,那么与过滤相比,直接读取单个目录可能会更快,因为 Spark 需要构建一个索引来应用该过滤器。请参阅以下问答


推荐阅读