当s3路径显式给定时,模式合并不起作用

2024-10-03 09:13:31 发布

您现在位置:Python中文网/ 问答频道 /正文

当s3路径被显式地指定用于读取不在同一目录中的拼花文件时,不会推断分区方案,因此我不会在spark数据帧中获得分区列

我在读取拼花文件时尝试了merge schema=True选项,但在给定根文件夹而不是显式路径时,这似乎是可行的

我当前的s3目录结构

bucket
    folder1
        .....|- col=val1/file1.parquet
        .....|- col=val2/file2.parquet
        .....|- col=val3/file3.parquet
        .....
    folder2
        .....|- col=val1/file4.parquet
        .....|- col=val2/file5.parquet
        .....|- col=val3/file6.parquet
        .....
    .....

我想读取键列值为val1和val2的所有文件。 因此,我将这些路径的s3路径作为一个列表,并显式地读取它们

s3paths = ['s3://bucket/folder1/col=val1/file1.parquet',
's3://bucket/folder1/col=val2/file2.parquet',
's3://bucket/folder1/col=val1/file4.parquet',
's3://bucket/folder2/col=val2/file5.parquet']

df = spark.read.parquet(*s3paths) 

# another option
df = spark.read.options("mergeSchema", True).parquet(*s3paths) 

我可以读取文件,但列col没有出现在spark数据帧中

我希望列'col'出现在我的数据帧中


Tags: 文件数据路径目录s3bucketcolspark