Spark - как получить имя файла с родительской папкой из столбца данных - PullRequest
0 голосов
/ 17 мая 2018

Я использую pyspark в качестве языка кода. Я добавил столбец, чтобы получить имя файла с путем.

from pyspark.sql.functions import input_file_name
data = data.withColumn("sourcefile",input_file_name())

Я хочу извлечь из этого столбца только имя файла с его родительской папкой. Пожалуйста, помогите.

Пример:

Inputfilename = "adl://dotdot.com/ingest/marketing/abc.json"

Какой вывод я ищу:

marketing/abc.json

Примечание: строковая операция, которую я могу сделать. Столбец filepath является частью dataframe.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Если вы хотите сохранить значение в столбце данных, вы можете использовать pyspark.sql.function regexp_extract. Вы можете применить его к столбцу со значением path и передачей регулярного выражения, необходимого для извлечения нужной части:

data = data.withColumn("sourcefile",input_file_name())

regex_str = "[\/]([^\/]+[\/][^\/]+)$"
data = data.withColumn("sourcefile", regexp_extract("sourcefile",regex_str,1))
0 голосов
/ 17 мая 2018

Я думаю, что вы ищете:

sc.wholeTextFiles('path/to/files').map(
    lambda x : ( '/'.join(x[0].split('/')[-2:]), x[1])
)

Это создает rdd с 2 столбцами, 1-й из которых - path to file, второй - содержимое файла. Это единственный способ связать путь и контент в искре. Другой метод существует в Hive, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...