需要注意的是,在 Minor 或 Major Compaction 执行之后,原来的文件不会被立刻删除。这是因为删除的动作是在另一个名为 Cleaner 的线程中执行的。因此,表中可能同时存在不同事务 ID 的文件组合,这在读取过程中需要做特殊处理。
有了大致的了解后,是否任意存储格式的表均具有ACID特性?
首先TextFile,默认建表语句中关于事务的配置项:
'transactional'='true', 'transactional_properties'='insert_only',
可以执行insert操作,但是无法执行delete和update,报错:
Error: Error while compiling statement: FAILED: SemanticException [Error 10414]: Attempt to do update or delete on table test.text_table1 that is insert-only transactional (state=42000,code=10414)
尝试修改transactional_properties值为default,但是无法修改:
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Cannot convert an ACID table to non-ACID (state=08S01,code=1)
官网的意思是目前仅支持ORC格式的hive表: