我想用濾鏡進行hbase掃描。例如,我的表具有列族A,B,C,並且A具有列X.一些行具有列X而一些行不具有列。我怎樣才能實現過濾器來過濾出列X的所有行?如何過濾出給定列(非空)的行?
回答
我想你正在尋找HBase中的SingleColumnValueFilter
。正如在API
提到爲了防止發出的整行,如果在一行上未找到列中,篩選對象使用
setFilterIfMissing(boolean)
。否則,如果找到該列,則只有該值通過時纔會發射整行。如果該值失敗,該行將被過濾掉。
但SingleColumnValueFilter
希望值有X列「compareop的」的東西,說把此行如果ColumnX ==「X」 或 把此行如果ColumnX!=「前哨值ColumnX能從不採取「和setFilterIfMissing(true)
,這樣如果ColumnX有一些值,它就會返回。
我希望這會推動你朝着正確的方向前進。
您可以使用SkipFilter以及ColumnPrefixFilter。 ColumnPrefixFilter獲取列存在的鍵(一個HBase行將只有一個列,如果它有一個值)Skip過濾器會給你第一個過濾器上的「Not」,因此該行將被省略
請注意,這隻會傳遞行中_all_行中的列通過前綴過濾器 –
Ankit Arnon user1573269
的唯一途徑,我可以得到它的工作,就像下面
所以 - 我有一個表列的規則1,規則2,規則3等。 行可以只有rule1列或rule1和rule2或rule1和rule2和rule3等。說 - 我想提取其中只有rule1的行。 現在這意味着,我將不得不跳過其中有rule2的行。
Scan getRules = new Scan();
ColumnPrefixFilter rule1Filter = new ColumnPrefixFilter(Bytes.toBytes("rule1"));
SingleColumnValueFilter skipRule2Value = new SingleColumnValueFilter(Bytes.toBytes("rules"),Bytes.toBytes("rule2"),
CompareOp.EQUAL,Bytes.toBytes("0"));
SkipFilter skipRule2 = new SkipFilter(skipRule2Value);
getRules.setFilter(rule1Filter);
getRules.setFilter(skipRule2);
ResultScanner scanner = htable.getScanner(getRules);
雖然這工作,我不是很滿意的解決方案。它需要時間讓hbase弄清楚。我原以爲應該有一個更簡單的方法,不需要檢查價值。 Arnon,你的方法不起作用,因爲SkipFilter會跳過那些DONOT滿足條件的東西。因此,從ColumnPrefixFilter構造它會使需求失敗。
- 1. jquery過濾器給出空的結果
- 2. 將過濾的DataGridView分配給DataRow []給出空值(過濾器有結果)
- 3. 如何計算非空列的數量而不給出範圍?
- 4. 如何根據特定列值過濾出行
- 5. 如何獲得給定主陣列和過濾數組的未過濾對象?
- 6. 如何非特定地過濾NULL值的列?
- 7. 如何在輸入列表時按過濾器中的空間進行過濾?
- 8. 如何返回非空行對於給定的ID - 蜂巢
- 9. 免費jqGrid - 「空」和「非空」的自定義過濾器規則
- 10. 選定行成爲非選擇過濾
- 11. 如何快速過濾給定一組鍵的散列?
- 12. R dplyr對給定列的數值過濾行
- 13. 過濾行給出鍵/值對在jsonb列
- 14. 如何按一列的值過濾行?
- 15. 過濾部分給出了
- 16. 從非過濾行復制到excel中的過濾行
- 17. 選定列的列過濾
- 18. Linq過濾出空或空字符串空行
- 19. 如何過濾xcodebuild命令行輸出?
- 20. 立交API - 過濾掉非空標籤
- 21. HBase過濾非空字符串
- 22. 在非空WrappedArray上過濾數據幀
- 23. 過濾出張量中的非零值
- 24. angularjs $過濾如何過濾2D陣列
- 25. 如何過濾非流動的日子
- 26. 如何過濾選定列和行的值?
- 27. 如何過濾行
- 28. 如何針對特定列過濾JTable?
- 29. 如何自動按列過濾行
- 30. 如何過濾出Java中的非法XML字符
非常感謝。它幫助了很多。 upvoted – Sanket