Hive - Hbase 集成事务更新与时间戳

Hive - Hbase integration Transactional update with timestamp

我是 hadoop 和大数据的新手,这几天只是想弄清楚将我的数据存储移动到 hbase 的可能性,我遇到了一个问题,你们中的一些人可能会帮助我解决这个问题.就是这样,

我有一个 hbase table "hbase_testTable" 列族:"ColFam1"。我已将 "ColFam1" 的版本设置为 10,因为我必须维护此列系列的最多 10 次更新的历史记录。哪个工作正常。当我尝试通过 hbase shell 添加具有显式时间戳值的新行时,它工作正常。基本上我想使用时间戳作为我的版本控制。所以我将时间戳指定为

put 'hbase_testTable' '1001','ColFam1:q1', '1000$', 3

其中 '3' 是我的版本。一切正常。

现在我正在尝试与 HIVE 外部 table 集成,并且我已将所有映射设置得很好以匹配 hbase table 的映射,如下所示:

create external table testtable (id string, q1 string, q2 string, q3 string) 
STOREd BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH 
SERDEPROPERTIES ("hbase.columns.mapping" = ":key,colfam1:q1, colfam1:q2, colfam1:q3") 
TBLPROPERTIES("hbase.table.name" = "testtable", "transactional" = "true");

并且在正常插入时工作正常。它更新 HBase table,反之亦然。

即使外部 table 已创建 "Transactional",我也无法更新 HIVE 上的数据。它给了我一个错误:

FAILED: SemanticException [Error 10294]: Attempt to do update or delete
        using transaction manager that does not support these operations

说,对 hbase table 所做的任何更新都会立即反映在配置单元 table 上。

我可以使用外部配置单元 table 更新 Hbase table,方法是尝试使用列的新数据插入 "rowid" 的外部配置单元 table。

我是否可以控制写入引用的 hbase 的时间戳table(如 4、5、6、7.. 等) 请帮忙。

时间戳是 Hbase 版本控制中的重要元素之一。您正在尝试创建自己的时间戳,它在 Hbase 级别运行良好。 有一点,你应该非常小心,具有独特性和非负面性。您可以在 HBase-Definitve Guide book 中查看 Custom versioning。

现在你在 Hbase 之上有了 Hive。根据文档,

there is currently no way to access the HBase timestamp attribute, and queries always access data with the latest timestamp.

这就是阅读部分。而放数据,可以看here。 它仍然说,你必须提供有效的时间戳而不是任何其他值。

未来的版本有望公开时间戳属性。 我希望您对如何处理 Hive-Hbase 集成中的自定义时间戳有了更好的了解。