开发者社区> 问答> 正文

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

社区小助手 2019-01-02 15:17:28 725

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

每个csv文件大约为1mb。

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

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

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

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

分布式计算 Linux Spark Python
分享到
取消 提交回答
全部回答(1)
  • 社区小助手
    2019-07-17 23:24:25

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

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

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

    0 0
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

推荐文章
相似问题
推荐课程