'daki bir satıra birkaç QualifierFilter nasıl uygulanır, biz iki QualifierFilters içeren bir HBase tablosundaki bir taramayı filtrelemek isteriz. Yalnızca belirli bir sütun olan 'col_A' AND (!) Belirli bir sütun 'col_B' olan tablonun satırlarını almak istediğimiz anlamına gelir.HBase
Mevcut yaklaşım şuna benzer: Her iki sütun 'col_A' ve 'col_B' var HBase tabloda birkaç satır olmasına rağmen
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
Filter filter1 = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("col_A".getBytes()));
filterList.addFilter(filter1);
Filter filter2 = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("col_B".getBytes()));
filterList.addFilter(filter2);
Scan scan = new Scan();
scan.setFilter(filterList);
...
ResultScanner bu taramadan herhangi bir sonuç vermez.
Yalnızca filtrelere 1 filtre uygularsak, her şey düzgün çalışıyorsa, 'col_A' olan tüm satırları elde ederiz. Sadece filtreyi 2 taramaya uyguluyorsak, aynıdır. 'Col_B' olan tüm satırları alırız.
Yalnızca bu iki filtreyi birleştirirsek, hiçbir sonuç elde edemeyiz.
Sadece col_A AND col_B olan tablodaki satırları almanın doğru yolu ne olurdu?
Yanıt için teşekkürler. Sadece denedim ve davamız için çalışıyor. Ama soru performansla ilgili. Filtrelerin FilterList'e yerleştirildiklerinde sırayla değerlendirildiğini kabul ediyorum. Yani eğer col_A'nın var olduğu birçok satır varsa, HBase bu sütundaki gerçek değerleri kontrol etmelidir. Bu oldukça pahalı geliyor. Gerçek hücre değerleri kontrol edilmeden önce her iki sütunun varlığını ilk değerlendirmek için herhangi bir yolu var mı? – Henrik
@Henrik Ne kadar veri olduğunu bilmiyorum ama korkarım haklısın. Başka bir seçenek, aradığınız niteleyici listesini alan özel bir filtrenin uygulanmasıdır. –