蜂巢插入事务,最多一次批处理数据

时间:2018-12-04 08:41:32

标签: apache-spark hadoop hive

我每周都有要插入的数据,例如,我插入的第一周:

spark.range(0,2).write.mode("append").saveAsTable("batches")

然后我插入第二周:

spark.range(2,4).write.mode("append").saveAsTable("batches")

我担心插入id为2的记录时发生一些异常,没有插入3,然后我再次插入第二周的数据,会有两个2。

我用谷歌搜索, 蜂巢不适用于删除特定的记录集:link,因此我无法删除第二周之前剩余的数据。

我认为我可以使用配置单元事务,但是spark is not right now (2.3 version) fully compliant with hive transactional tables.似乎启用了配置单元事务也无法读取配置单元。

我看到了另一个网站:Hive's ACID feature (which introduces transactions) is not required for inserts, only updates and deletes. Inserts should be supported on a vanilla Hive shell.,但是我不明白为什么插入不需要交易,这是什么意思。

那么,如果我不想获取重复的数据,或者像一次运行一样,该怎么办?

如果您说2到3之间不会有例外,请考虑另一种情况,如果我要写很多表:

   spark.range(2,4).write.mode("append").saveAsTable("batches")
   val x=1/0
   spark.range(2,4).write.mode("append").saveAsTable("batches2")

我对其进行了测试,新记录2和3已插入表“ batches”中,但未插入“ batches2”中,因此,如果我要再次插入,必须仅插入“ batches2”?但是我怎么知道例外在哪里,我应该再次插入哪些表?我必须插入许多try and catch,但是这会使代码难以读写。那例外是磁盘已满或电源关闭了吗?

如何防止重复数据?

0 个答案:

没有答案