【问题标题】:How to convert files with Spark, while keeping folders structure如何使用 Spark 转换文件,同时保持文件夹结构
【发布时间】:2017-10-26 23:14:21
【问题描述】:

我有一堆按 Hive 分区模式 (s3://csvfiles/Y=2017/M=10/D=12/H=23/M=12/...) 排列在文件夹中的 csv 文件。

所以,我在每个“小时”文件夹中都有几个 csv 格式的文件。 我想将特定时间的所有文件组合成一个 ORC 格式的文件,将其写入不同的根文件夹,但保持“日期”模式。 所以结果会是这样的:

s3://orcfilesY=2017/M=10/D=12/H=23/singlefile.orc

Spark 可以做到吗?

谢谢

【问题讨论】:

    标签: apache-spark pyspark


    【解决方案1】:

    repartitionpartitionBy

    val n: Int
    
    df
      .partitionBy(n, $"Y", $"M", $"D", $"H")
      .write.partitionBy("Y", "M", "D", "H").orc(...)
    

    【讨论】:

    • AFAIK 这将忽略我在源文件夹中已有的分区 - 它会读取所有数据并重新分区。我发现对于镶木地板文件,如果我定义“基本路径”,它将执行“分区发现”(spark.apache.org/docs/1.6.0/…)。如何做到这一点
    • AFAIK 这将忽略我在源文件夹中已有的分区 - 它会读取所有数据并重新分区。我发现对于镶木地板文件,如果我定义“基本路径”,它将执行“分区发现”[spark.apache.org/docs/1.6.0/…. csv文件也可以吗?在我的源中,数据也按分钟分区,而在目标上,我希望它仅按 Y/M/D/H 分区。如果我将按部分键重新分区,是否会重新洗牌所有数据?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 2018-11-01
    相关资源
    最近更新 更多