Spark уже читает целые каталоги и может записать весь этот фрейм данных в Parquet
df = spark.read.csv("file:///local_csv_dir")
df.write.parquet("hdfs:///other/dir")
read.csv даже имеет доступ к именам файлов, поэтому я не думаю, что вы можете разделить его таким образом.
Вы можете добавлять имена файлов с помощью функций withColumn
и input_file_name
, однако в идеале вы должны разбить поле в данных с низким количеством элементов (несколько уникальных значений)
Возможно, «лучшим» способом было бы поместить все файлы CSV в большой архив BZ2 и просто поместить их в HDFS.Затем вы можете читать этот один файл параллельно и записывать в разные форматы, или обрабатывать его напрямую, все в Hadoop