如何在Spark中读取分区数据?

问题描述

许多示例建议读取诸如spark.read("path/partition=value/*")之类的数据,但是如何从路径定义列呢?

例如,我想读取path/2019/12/31/*获取yearmonthday列,这些列是从路径派生的,而不是从数据本身。 pyspark如何做到?

解决方法

您的问题:how to define a column from path?

取决于文件格式。就是在parquet上,此信息存储在文件路径中。

如果您的数据框以分区列year,month,day的形式存储在镶木地板中,则它看起来像

/yourParquetLocation/year=2019/month=12/day=31

所以这可以工作

spark.read.parquet("/yourParquetLocation/year=2019/month=12/day=31")