आप इसे कई तरीकों से कर सकते हैं। सबसे आसान एक पेज फिल्टर है। नीचे HBase: The Definitive Guide, पेज 150.
private static final byte[] POSTFIX = new byte[] { 0x00 };
Filter filter = new PageFilter(15);
int totalRows = 0; byte[] lastRow = null;
while (true) {
Scan scan = new Scan();
scan.setFilter(filter);
if (lastRow != null) {
byte[] startRow = Bytes.add(lastRow, POSTFIX);
System.out.println("start row: " + Bytes.toStringBinary(startRow));
scan.setStartRow(startRow);
}
ResultScanner scanner = table.getScanner(scan);
int localRows = 0;
Result result;
while ((result = scanner.next()) != null) {
System.out.println(localRows++ + ": " + result);
totalRows++;
lastRow = result.getRow();
}
scanner.close();
if (localRows == 0) break;
}
System.out.println("total rows: " + totalRows);
या आप सीमा आप चाहते हैं के लिए स्कैन पर पकड़ने सेट और फिर हर के लिए पिछला स्कैन से अंतिम पंक्ति + 1 के लिए शुरू पंक्ति को बदल सकते हैं से कोड उदाहरण है प्राप्त।
स्रोत
2014-05-04 22:42:38
मैंने इसे निश्चित रूप से हब्स में देखा। इसमें एक बड़ा सिर है। – Mark
मुझे यहां बड़े ओवरहेड के बारे में निश्चित नहीं है। यह एक कैश के साथ स्कैन के समान है। आपको प्रारंभ पंक्ति (आसान) मिलती है और सीमा तक पहुंचने तक इसे पढ़ना शुरू कर देते हैं। निश्चित गाइड में एकमात्र मामूली समस्या का उल्लेख किया गया है "फ़िल्टर समानांतर में विभिन्न क्षेत्र सर्वरों पर चलते हैं और उन सीमाओं में अपने वर्तमान राज्य को बनाए रखने या संवाद नहीं कर सकते हैं। इस प्रकार, प्रत्येक फ़िल्टर को कम से कम पृष्ठ तक स्कैन करने की आवश्यकता होती है ताकि स्कैन समाप्त होने से पहले पंक्तियां हों। इसका मतलब है पृष्ठफिल्टर के लिए थोड़ी सी अक्षमता दी जाती है क्योंकि क्लाइंट को आवश्यकतानुसार अधिक पंक्तियां दी जाती हैं। " –
हाय अरुण, क्या उपयोगकर्ता को 'ith' पृष्ठ चुनने का कोई तरीका है? आपके दृष्टिकोण के साथ, मैं उपयोगकर्ता को एक समय में पूरे परिणाम सेट, 1 "पृष्ठ" पर फिर से शुरू करने की अनुमति दे सकता हूं, लेकिन मैं उपयोगकर्ता को किसी भी दिए गए पृष्ठ नंबर को चुनने में सक्षम नहीं हूं जिसे वह जाना चाहता है। –