我正在尝试从一个分区文件夹中加载pyspark csv : mnt/data/test/ingestdatetime=20210208/test_20210208.csv
df = spark.read.csv("mnt/data/test")
df = df.filter(df['ingestdatetime'] == '20210208') 基本上,我想看看模式是否与它应该的不同(数据没有标头,所以我不能比较标头)
问题是,每当我在顶层" data /test/“加载数据时,模式都是基于几行”推断“的,并且它不会看到新文件是否有额外的列或太多的列。==>,所以我无法比较模式是否不同。
我看到了这个(6列):

而不是这个(7列):

第一种方法是直接从分区加载数据( data /test/ingestdate=20210208/)。但是我会丢失分区键列类型。
我想我也可以将所有内容都加载为字符串。
发布于 2021-05-20 05:23:02
在使用PySpark进行读取时,您可以使用basePath选项将分区列“保留”在输出数据帧中。此选项是众所周知的,但没有文档记录(或documented only for Parquet,但适用于所有其他来源)
spark.read.option("basePath", "/mnt/data/test").csv("/mnt/data/test/ingestdate=20210208")https://stackoverflow.com/questions/67055222
复制相似问题