代码之家  ›  专栏  ›  技术社区  ›  damian

spark:partition.txt.gz文件并转换为parquet

  •  0
  • damian  · 技术社区  · 6 年前

    我需要转换一个文件夹中的所有文本文件,这些文件被gzip压缩为parquet。我想知道我是否需要先把他们枪毙。 另外,我想把每个文件分成100个部分。 这就是我目前所拥有的:

    sc.textFile("s3://bucket.com/files/*.gz").repartition(100).toDF()
        .write.parquet("s3://bucket.com/parquet/")
    

    这是对的吗?我遗漏了什么吗? 谢谢。

    1 回复  |  直到 6 年前
        1
  •  1
  •   philantrovert    6 年前

    不需要单独解压缩文件。直接读取gzip文件的唯一问题是您的读取不会被并行化。这意味着,不管文件大小,每个文件只能有一个分区,因为 gzip 不是可拆分压缩编解码器。

    如果单个文件大于特定大小(2GB?),则可能会遇到问题。因为spark的分区大小有一个上限。

    除此之外,您的代码在功能上看起来还不错。