通过在Hive中启用事务,我们可以更新记录。假设我正在为我的hive表使用AVRO格式。
https://hortonworks.com/hadoop-tutorial/using-hive-acid-transactions-insert-update-delete-data/
hive如何处理更新AVRO文件并在不同服务器上再次复制它们(coz复制因子为3)。
我找不到一篇解释这个问题的好文章,以及在Hive中使用ACID的结果。由于建议将HDFS用于非更新或仅附加文件,因此如何在两者之间更新记录。
请告知。
答案 0 :(得分:3)
表的数据存储在一组基本文件中。新记录,更新和删除存储在增量文件中。为每个事务(或者在诸如Flume或Storm的流代理,每批事务的流量代理的情况下)创建一组新的增量文件来改变表。在读取时,读取器合并基本文件和增量文件,在读取时应用任何更新和删除。
随后,主要压缩将周期性的时间间隔将较大的增量文件和/或基本文件合并到另一个基本文件中,这将加速进一步的表扫描操作。
定期压缩插入/更新/删除的数据,以节省空间并优化数据访问。
ACID交易功能目前存在以下限制:
ACID不支持AVRO文件,并且AFSD表的HDFS块替换策略也相同。
下面的链接可以更有助于理解Hive中的ACID表。
http://docs.qubole.com/en/latest/user-guide/hive/use-hive-acid.html
https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions