将 Spark 数据帧合并到现有的 ACID 事务 Hive table?
Merge a Spark data frame into an existing ACID transactional Hive table?
考虑 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
现在想象一下:
- base_table 是一个事务性 Hive table(ACID 操作
已启用)。
- 而不是 merge_from_table 我们生成了一个数据框
在 Spark
问题 1:
有什么办法可以直接将data frame合并到Hive中table?
如果问题 1 的答案是“否”,则:
问题2:目前我能想到的最好的办法就是将data frame写到一个临时的hive中table然后用上面的Hive语句合并进入我的 base_table。有更好的方法吗?
验证多于答案。
- 假设您不使用 Databricks 的增量格式
- 并且您确实想要重新陈述数据
- 并且您不想在 Spark 中使用自己的增量计算和优化技术来限制处理
- 并且您不想将数据插入“当前”分区
- 然后。 Spark 不支持 DDL 更新
- 所以您的下一个最佳解决方案确实是最简单的。
考虑 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
现在想象一下:
- base_table 是一个事务性 Hive table(ACID 操作 已启用)。
- 而不是 merge_from_table 我们生成了一个数据框 在 Spark
问题 1: 有什么办法可以直接将data frame合并到Hive中table?
如果问题 1 的答案是“否”,则:
问题2:目前我能想到的最好的办法就是将data frame写到一个临时的hive中table然后用上面的Hive语句合并进入我的 base_table。有更好的方法吗?
验证多于答案。
- 假设您不使用 Databricks 的增量格式
- 并且您确实想要重新陈述数据
- 并且您不想在 Spark 中使用自己的增量计算和优化技术来限制处理
- 并且您不想将数据插入“当前”分区
- 然后。 Spark 不支持 DDL 更新
- 所以您的下一个最佳解决方案确实是最简单的。
- 然后。 Spark 不支持 DDL 更新
- 并且您不想将数据插入“当前”分区
- 并且您不想在 Spark 中使用自己的增量计算和优化技术来限制处理
- 并且您确实想要重新陈述数据