PySpark 如何获取查询结果中的分区名称?

PySpark how to get the partition name on query results?

我想在查询结果中检索分区名称。

所以如果我有这样的分区:

dataset/foo/
        ├─ key=value1
        ├─ key=value2
        └─ key=value3

我可以做这个查询

results = session.read.parquet('dataset/foo/key=value[12]') \
                      .select(['BAR']) \
                      .where('BAZ < 10')

执行此操作后如何知道每个结果的分区来源?

事实上,我只能从 BAR 列中获取值。

感谢您的帮助

在您的 select 语句中包含 key 列!

#read foo directory as it is partiitoned so we can filter on the key
results = session.read.parquet('foo/') \
                      .select(['BAR','key']) \
                      .filter((col("key") == "value1") & (col("BAZ") < '10')) 

如果您想将来源 filename 添加到所有记录,请使用 input_file_name()

from pyspark.sql.functions import *
results = session.read.parquet('foo/') \
                      .select(['BAR','key'])\
                      .withColumn("input_file", input_file_name()) \
                      .filter((col("key") == "value1") & (col("BAZ") < '10'))