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'))
我想在查询结果中检索分区名称。
所以如果我有这样的分区:
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'))