【问题标题】:Merge a Spark data frame into an existing ACID transactional Hive table?将 Spark 数据帧合并到现有的 ACID 事务 Hive 表中?
【发布时间】:2020-11-07 11:01:02
【问题描述】:

考虑 Hive 中的简单合并语句:

merge into
  base_table A 
using
  merge_from_table B 
on
  (A.id = B.id)
when matched then update set 
  A.lastname = B.lastname 

现在想象一下:

  1. base_table 是一个事务性 Hive 表(ACID 操作 已启用)。
  2. 我们有一个生成的数据框,而不是 merge_from_table 在 Spark 中

问题 1: 有没有办法直接将数据框合并到Hive表中?

如果问题 1 的答案是“否”,那么:

问题2:目前我能想到的最好的就是将数据框写入一个临时的hive表中,然后使用上面的Hive语句合并到我的base_table中。有没有更好的方法?

【问题讨论】:

    标签: apache-spark pyspark hive acid


    【解决方案1】:

    更多的是验证而不是答案。

    • 假设您不使用 Databricks 中的 delta 格式
      • 并且您确实想重新声明数据
        • 并且您不想在 Spark 中使用自己的增量计算和优化技术来限制处理
          • 并且您不希望将数据插入“当前”分区
            • 那么。 Spark 不支持 DDL 更新
              • 所以您的下一个最佳解决方案确实是最简单的。

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 2016-12-31
      相关资源
      最近更新 更多