问题描述
正如https://cwiki.apache.org/confluence/display/Hive/Hive+Transactions所说,Hive支持某些有限的ACID交易。因此,如果我只需要行级事务,Hive是否足够? HBase的优势会越来越少吗?
谢谢。
解决方法
可以使用Apache Phoenix在HBase中进行ACID事务,https://phoenix.apache.org/transactions.html是HBase的一层,提供用于处理数据的SQL接口。
要使用事务,请在安装Phoenix后在hbase-site.xml中将属性phoenix.transactions.enabled
设置为true
,然后在创建表时使用TRANSACTIONAL
选项。例如:
CREATE TABLE my_table (id INTEGER PRIMARY KEY,val VARCHAR) TRANSACTIONAL=true;
在此之后,您通常可以通过JDBC或其他接口使用SQL与表进行正常交互。 (请注意,您也可以将现有的非事务处理表更改为事务性表。)
有关更多信息,您可以在项目的网站上阅读有关Phoenix及其交易支持的信息:
{{3}}