Spark читает несколько файлов CSV, один раздел для каждого файла - PullRequest
0 голосов
/ 30 октября 2018

предположим, у меня есть несколько файлов CSV в одном каталоге, все эти файлы имеют одну и ту же схему.

/ tmp / data / myfile1.csv, /tmp/data/myfile2.csv, /tmp/data.myfile3.csv, /tmp/datamyfile4.csv

Я хотел бы прочитать эти файлы в Spark DataFrame или RDD, и я бы хотел, чтобы каждый файл был частью DataFrame. Как я могу это сделать?

1 Ответ

0 голосов
/ 30 октября 2018

У меня есть два варианта:

1) Использовать имя входного файла

Вместо того, чтобы пытаться управлять секционированием напрямую, добавьте имя входного файла в свой DataFrame и используйте его для любых операций группировки / агрегирования, которые вам нужно выполнить. Вероятно, это ваш лучший вариант, так как он больше соответствует целям параллельной обработки spark, когда вы говорите ему, что делать, и позволяете ему понять, как. Вы делаете это с помощью следующего кода:

SQL:

SELECT input_file_name() as fname FROM dataframe

Или Python:

from pyspark.sql.functions import input_file_name

newDf = df.withColumn("filename", input_file_name())

2) Распакуйте ваши CSV-файлы

Gzip не разделяемый формат сжатия. Это означает, что при загрузке сжатых файлов каждый файл будет иметь свой собственный раздел.

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