【问题标题】:how to handle exception occurred while using dataframe.saveAsTable如何处理使用 dataframe.saveAsTable 时发生的异常
【发布时间】:2022-01-11 15:09:00
【问题描述】:

在 spark 中,假设数据框 df 有 100 条记录和 df.saveAsTable("sometablename") 假设数据框已保存 50 条记录,在保存其余 50 条记录时,如果发生错误,是否会撤销已保存的 50 条记录?

在 sql server 的情况下,我们有 commit 和 rollback tran。我们在火花中有这样的东西吗?请帮忙

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    Spark 不是原子的,但它确实会尝试做好事。

    我建议您实施与 spark 和 hadoop 类似的策略。

    创建临时表df.saveAsTable("sometablename_temp")

    写入所有数据后,更改名称。

    spark.sql("ALTER TABLE sometablename_temp RENAME TO sometablename;")
    

    这降低了操作的风险。如果在编写临时表时发生故障,也没有什么坏处。此“提交”在驱动程序级别,这是处理执行程序失败的正确级别。

    【讨论】:

      【解决方案2】:

      我认为最好将您的表创建为分区表,以防万一删除该分区失败。

      【讨论】:

      • 在您尚未纠正问题(分区)期间,可能会有人读取部分数据的数据。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 2013-08-13
      • 2016-04-22
      • 1970-01-01
      • 2013-12-19
      相关资源
      最近更新 更多