PySpark, как получить имя раздела по результатам запроса? - PullRequest
1 голос
/ 01 апреля 2020

Я хотел бы получить имя раздела по результатам запроса.

Так что, если у меня есть раздел вроде:

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

Я могу выполнить этот запрос

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

Как только я это сделаю, как узнать происхождение раздела для каждого результата?

Действительно, я могу получить только значения из столбца BAR.

Спасибо за вашу помощь

1 Ответ

1 голос
/ 01 апреля 2020

Включите столбец 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')) 

Если вы хотите добавить источник имя файла ко всем записям, используйте 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'))
...