【问题标题】:Spark partitioned data multiple filesSpark分区数据多个文件
【发布时间】:2026-01-18 06:40:01
【问题描述】:

我有 5 个表存储为 CSV 文件(A.csv、B.csv、C.csv、D.csv、E.csv)。每个文件都按日期分区。如果我的文件夹结构为:

A/ds=2017-07-01/A.csv
A/ds=2017-07-02/A.csv 
...
E/ds=2017-07-02/E.csv

然后使用以下命令将自动识别 Spark 2.x 中表 A 的分区

data_facts = spark.read\
  .option('inferSchema', 'true')\
  .option('header', 'true')\
  .csv('/FileStore/A/')

我的问题是,如果我的文件夹结构是这样的,我是否还能保持相同的功能:

Data/ds=2017-07-01/A.csv
Data/ds=2017-07-01/B.csv 
Data/ds=2017-07-01/C.csv 
Data/ds=2017-07-01/D.csv 
Data/ds=2017-07-01/E.csv 
Data/ds=2017-07-02/A.csv
Data/ds=2017-07-02/B.csv 
Data/ds=2017-07-02/C.csv 
Data/ds=2017-07-02/D.csv 
Data/ds=2017-07-02/E.csv 

在这种情况下,有没有办法跨分区读取表 A?还是我最好将数据移动到每个表的单个文件夹中?

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    将表放在顶部(A、B、C 等),然后是 ds 分区,最后是底部的原始 [相同架构!] CSV 文件是正确的方法。

    您建议的第二种样式需要丑陋的 hack 以使分区可用,并确保表只有其相关数据而没有来自其他表的交叉污染模式。

    【讨论】: