【问题标题】:Spark Overwrite to particular partition of parquet filesSpark覆盖到parquet文件的特定分区
【发布时间】:2018-09-07 03:20:47
【问题描述】:

我有一个由数十亿 (20) 条记录组成的巨大表,我的源文件作为输入是 Target parquet 文件。

每天我都会收到一个增量传入文件来更新目标文件夹中的现有记录并附加新数据。

使用 spark SQL 数据帧,有没有办法读取和更新 parquet 文件的特定分区?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql aws-glue


    【解决方案1】:

    我发现这个问题在标题中的覆盖方面有点不清楚,但附加在正文中。无论如何,我想这取决于解释。

    另外,不确定它是一个表还是只是一个文件,但这工作正常,例如:

    df.write.format("parquet").mode("append").save("/user/mapr/123/SO.parquet")
    

    在这种情况下,您可以将任何数据多次附加到目录,而不是 Hive 注册表。 DF Writer 完成所有工作。

    如果覆盖,那么这也足够了,但是如果你不想丢失它,你还需要提供原始数据:

    df.write.format("parquet").mode("overwrite").save("/user/mapr/123/SO.parquet")
    

    很可能你想要的东西是不可能的,即追加和新建。在这种情况下,您需要自己的差异分析器和几行代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-30
      • 2017-12-02
      • 2021-05-16
      • 1970-01-01
      • 2020-06-29
      • 2018-10-04
      • 1970-01-01
      • 2018-10-03
      相关资源
      最近更新 更多