- 我是HBase的新手,我在HBase客戶端API中找到,更新操作不支持?那是對的嗎?
- 如果是這樣,那麼建議的最佳實踐是如何更新特定rowkey的值?
回答
您可以使用PUT來創建或更新任何單元格的值。 你不要需要使用刪除,除非你想新版本沒有一些舊的單元格。
說,我們有
r1:f1:c1:value1
r1:f1:c2:value2
你可以把R1:F1:C1新值,你會得到:實際上每個單元存儲爲rowkey,列族
r1:f1:c1:new value
r1:f1:c2:value2
注,單元格,時間戳,版本和值。因此,根據您設置版本的方式(每列家族),您還可以訪問舊值,包括執行時間點查詢以查看刪除的值。
我認爲你想要做的是執行Put操作。 您可以看看HBase的Put API client docs以及本文的標題爲:Java Example Code using HBase Data Model Operations的一些示例以及操作說明。
要更新行,您必須在單個突變中發出「刪除」和「放入」序列,以便它們在外部被看作是更新。
請參閱Class RowMutations documentation瞭解如何構建此類通話。
嗨tonio,糾正我,如果我錯了。我沒有看到任何Put API支持更新操作或示例代碼。對於更新,我的意思是,在HBase表中已經有一行,例如,行鍵是r1,它有一列稱爲c1,並且在單元格r1/c1中有值。對於更新,我的意思是我想我想將單元格r1/c1的值更改爲其他值。如果我錯了,請隨時糾正我。 –
對,如果你想改變一行中的值,你必須結合刪除和放入一個原子呼叫。查看更新的答案。 – tonio
謝謝,我的問題得到解答。 –
- 1. hdfs上的HBase更新操作
- 2. HBase批量操作checkAndMutate
- 3. HBase批量放入操作
- 4. HBase MapReduce,多表操作
- 5. HBase掃描操作緩存
- 6. Hbase更新用例
- 7. SPARQL更新操作
- 8. 獲取該更新的更新操作
- 9. 更新操作不更新數據
- 10. HBase更新現有行
- 11. HBASE:更新經由JAVA API
- 12. 使用pig更新Hbase表
- 13. 蒙戈DB更新操作
- 14. 更新操作麻煩
- 15. SAS數據更新/操作
- 16. Zend Framework 1更新操作
- 17. 休眠 - 更新操作:
- 18. WriteResult mongoDB更新操作
- 19. HBase聚合,Get和Put操作,批量操作
- 20. Oozie Java操作:傳遞Hbase類路徑
- 21. 鳳凰加入操作不與hbase
- 22. 導軌更新操作不起作用
- 23. Yii更新操作如何工作
- 24. 在操作中更新IsAuthenticated不適用於後續操作?
- 25. Rails顯示操作被調用而不是更新操作
- 26. 插入/更新操作鎖定讀取操作在arangodb
- 27. 操作系統和操作系統如何更新自己?
- 28. HBase中的Memstore如何更新記錄?
- 29. 如何在HBase中更新數據
- 30. 操作員新操作員和新操作員不能重載?
謝謝,你的回答很明確,並且幫助我更好地理解HBase(我只是剛剛開始調查)。 – tonio
嗨@Arnon,我的問題是關於如何以原子方式更新。我想在原子操作序列中進行讀取(GET)和更新。假設在某種情況下如何更新取決於讀取的值,所以我想避免讀取和更新之間的任何更新。在你的樣本中,如何實現目標? –
你可以在HTable API中使用checkAndPut或checkAndDelete http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#checkAndPut(byte [],byte [],byte [] ,byte [],org.apache.hadoop.hbase.client.Put) –