簡體   English   中英

Hive - Hbase 集成帶有時間戳的事務性更新

[英]Hive - Hbase integration Transactional update with timestamp

我是 hadoop 和大數據的新手,只是想弄清楚這些天將我的數據存儲移動到 hbase 的可能性,我遇到了一個問題,你們中的一些人可能可以幫助我。 所以它就像,

我有一個帶有列族的 hbase 表"hbase_testTable""ColFam1" 我已將"ColFam1"的版本設置為 10 ,因為我必須維護該列族最多10 次更新的歷史記錄。 哪個工作正常。 當我嘗試通過帶有顯式時間戳值的hbase shell添加新行時,它工作正常。 基本上我想使用時間戳作為我的版本控制。 所以我將時間戳指定為

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

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

現在我正在嘗試與 HIVE 外部表集成,並且我已將所有映射很好地設置為匹配 hbase 表的映射,如下所示:

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 表,反之亦然。

即使外部表被設為“事務性”,我也無法更新 HIVE 上的數據。 它給了我一個錯誤:

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

也就是說,對 hbase 表所做的任何更新都會立即反映在 hive 表上。

我可以通過嘗試將列的新數據插入到“rowid”的 hive 外部表中,從而使用 hive 外部表更新 Hbase 表。

是否可以控制寫入引用的 hbase 表(如 4、5、6、7.. 等)的時間戳,請幫忙。

時間戳是 Hbase 版本控制中的重要元素之一。 您正在嘗試創建自己的時間戳,這在 Hbase 級別工作正常。 一點,就是你應該非常小心,用唯一性和非否定性。 您可以在 HBase-Definitve Guide book 中查看自定義版本控制。

現在您在 Hbase 之上擁有了 Hive。 根據文檔,

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

那就是閱讀部分。 對於放置數據,您可以查看此處 它仍然說,您必須提供有效的時間戳而不是任何其他值。

預計未來版本將公開時間戳屬性。 我希望您對如何在 Hive-Hbase 集成中處理自定義時間戳有更好的了解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM