में एसक्यूएल LIMIT जैसे कमांड एचबीएस के पास कोई आदेश है जो SQL LIMIT
क्वेरी जैसा काम करता है?एचबीएस
मैं इसे setStart
और setEnd
द्वारा कर सकता हूं, लेकिन मैं सभी पंक्तियों को फिर से शुरू नहीं करना चाहता हूं।
में एसक्यूएल LIMIT जैसे कमांड एचबीएस के पास कोई आदेश है जो SQL LIMIT
क्वेरी जैसा काम करता है?एचबीएस
मैं इसे setStart
और setEnd
द्वारा कर सकता हूं, लेकिन मैं सभी पंक्तियों को फिर से शुरू नहीं करना चाहता हूं।
HBase खोल आप सीमा का उपयोग कर सकते हैं: जावा एपीआई से
hbase> scan 'test-table', {'LIMIT' => 5}
आप Scan.setMaxResultSize(N)
या scan.setMaxResultsPerColumnFamily(N)
उपयोग कर सकते हैं।
इस काम के लिए,
स्कैन करें @ Engineiro, यह किया गया है – javamonkey79
setMaxResultSize स्कैन के सभी संस्करणों के लिए उपलब्ध नहीं है, पुराने संस्करणों के लिए आपको पेजफिल्टर प्रति @mirsik उदाहरण का उपयोग करने की आवश्यकता है – javamonkey79
एक फिल्टर PageFilter कहा जाता है। इसका उद्देश्य इस उद्देश्य के लिए है।
Scan scan = new Scan(Bytes.toBytes("smith-"));
scan.addColumn(Bytes.toBytes("personal"), Bytes.toBytes("givenName"));
scan.addColumn(Bytes.toBytes("contactinfo"), Bytes.toBytes("email"));
scan.setFilter(new PageFilter(25));
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
// ...
}
http://java.dzone.com/articles/handling-big-data-hbase-part-4
एक HBase शैल उपयोग करता है, निम्न आदेश क्वेरी परिणामों को सीमित करने के लिए इस्तेमाल किया जा सकता है: "सीमा" एकल उद्धरण में संलग्न किया जाना चाहिए।
scan 'table-name', {'LIMIT' => 10}
एक गारंटीकृत तरीका क्लाइंट पक्ष पर, इटरेटर लूप के अंदर सीमित करना है। यह एचबीएस रूबी शेल में लिया गया दृष्टिकोण है। table.rb से ($ HBASE_HOME/HBase-खोल/src/मुख्य/गहरे लाल रंग का/HBase/table.rb): लाइन 467:
# Start the scanner
scanner = @table.getScanner(_hash_to_scan(args))
iter = scanner.iterator
# Iterate results
while iter.hasNext
if limit > 0 && count >= limit
break
end
row = iter.next
...
end
यह scan.setFilter जोड़कर एक थोड़ा और अधिक कुशल बनाया जा सकता है (नया पेजफिल्टर (सीमा)) और scan.setCaching (सीमा), और फिर table.getScanner (स्कैन)। पेज फ़िल्टर यह सुनिश्चित करेगा कि प्रत्येक क्षेत्र सर्वर अधिकांश सीमा पंक्तियों पर वापस आ जाएगा, स्कैन कैशिंग सीमा यह सुनिश्चित करेगी कि प्रत्येक क्षेत्र सर्वर आगे पढ़ेगा और अधिकांश 'सीमा' पंक्तियों पर कैश करेगा, और उसके बाद क्लाइंट लूप सीमा जांच लूप को तोड़ सकती है ग्राहक द्वारा प्राप्त आदेश में पहली 'सीमा' पंक्तियां प्राप्त करना।
क्या आप कुछ शर्त या केवल एक साधारण सीमा के आधार पर परिणामों को सीमित करना चाहते हैं जो शीर्ष 'एन' रिकॉर्ड दिखाते हैं? – Tariq