开发者社区> 问答> 正文

如何将csv目录加载到hdfs作为parquet

我在linux上有一个包含数千个CSV文件的本地文件夹。

每个csv文件大约为1mb。

这些文件共享相同的列/格式,它们由文件名本身区分(即xxx_1.csv,xxx_2.csv,xxx_3,csv等)

现在,我想将目录加载到HDFS中,并将其保存为parquet格式。

在python(spark 2.3)中执行此操作的正确方法是什么?

加载整个目录的最佳方法是什么?
我应该使用什么分区?(文件名应该是分区吗?还是将文件名添加为新列更好?)

展开
收起
社区小助手 2019-01-02 15:17:28 4856 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    Spark已经读取了整个目录,并且可以在Parquet中写出整个数据帧

    df = spark.read.csv("file:///local_csv_dir")
    df.write.parquet("hdfs:///other/dir")
    我不认为read.csv甚至可以访问文件名,所以我认为你不能通过这种方式进行分区。理想情况下,您使用低基数(几个唯一值)对数据中的字段进行分区

    一种可以说是“更好”的方法是将所有CSV文件放入一个大型BZ2存档中,然后将其放在HDFS上。然后,您可以并行读取该文件,并在Hadoop中写入不同的格式或直接处理它们

    2019-07-17 23:24:25
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
海量数据分布式存储——Apache HDFS之最新进展 立即下载
File Format Benchmark - Avro, JSON, ORC, & Parquet 立即下载
From Apache ORC to AliORC 立即下载