我正在尝试使用Spark将一堆csv文件转换为parquet格式,有趣的是输入的csv文件已经通过目录进行了“分区”。
所有输入文件都具有相同的列集。
输入文件的结构如下:
我想用Spark读取这些文件,并将它们的数据写入到HDFS中的一个parquet表中,保留分区(按输入目录分区),每个分区只有一个输出文件。输出文件的结构应如下所示:
目前我找到的最佳解决方案是循环遍历输入目录,加载csv文件到一个dataframe中,然后将dataframe写入到parquet表的目标分区中。 但这并不是高效的,因为每个分区只有一个输出文件,而将数据写入hdfs是一个单个任务,会阻塞循环。 我想知道如何在集群中实现最大的并行化(并且没有对数据进行分片)。谢谢!
/path/dir1/file1.csv
/path/dir1/file2.csv
/path/dir2/file3.csv
/path/dir3/file4.csv
/path/dir3/file5.csv
/path/dir3/file6.csv
我想用Spark读取这些文件,并将它们的数据写入到HDFS中的一个parquet表中,保留分区(按输入目录分区),每个分区只有一个输出文件。输出文件的结构应如下所示:
hdfs://path/dir=dir1/part-r-xxx.gz.parquet
hdfs://path/dir=dir2/part-r-yyy.gz.parquet
hdfs://path/dir=dir3/part-r-zzz.gz.parquet
目前我找到的最佳解决方案是循环遍历输入目录,加载csv文件到一个dataframe中,然后将dataframe写入到parquet表的目标分区中。 但这并不是高效的,因为每个分区只有一个输出文件,而将数据写入hdfs是一个单个任务,会阻塞循环。 我想知道如何在集群中实现最大的并行化(并且没有对数据进行分片)。谢谢!