2012-04-04 22 views
5

हमारे अनंत ज्ञान में, हम अपने पंक्तियों बीच में एक टैब के साथ keyed किया जाएगा फैसला कियामैं hbase shell में एक पंक्ति कुंजी कैसे निर्दिष्ट करूं जिसमें उसमें एक टैब है?</p> <pre><code>item_id <tab> location </code></pre> <p>उदाहरण के लिए::

000001 http://www.url.com/page 

HBase शैल का उपयोग करना, हम एक आदेश मिलता है क्योंकि प्रदर्शन नहीं कर सकते इनपुट लाइन में टैब वर्ण ठीक से लिखा नहीं जाता है। हमने

get 'tableName', '000001\thttp://www.url.com/page' 

सफलता के बिना प्रयास किया। क्या करे?

उत्तर

10

मैं द्विआधारी मूल्यों के लिए एक ही मुद्दा था: \ x00। यह मेरा विभाजक था।

खोल अपने द्विआधारी मूल्यों को स्वीकार करने के लिए, आप दोहरे उद्धरण (") में उन्हें उपलब्ध कराने की आवश्यकता परिवार के बजाय एकल उद्धरण (') MyTable' MyKey",,

डाल। ' "': क्वालीफायर ', "\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x06Hello खोल से"

चेक कैसे अपने टैब इनकोडिंग जा रहा है, मेरे सबसे अच्छे शर्त होगी कि यह UTF8 से तो इनकोडिंग ASCII तालिका, इस होगा "000001 \ x09http: //www.url.com/page"

एक तरफ ध्यान दें पर, आप shou। एलडी अपने विभाजक के लिए शून्य चरित्र का उपयोग करें, यह आपको स्कैन में मदद करेगा।

+0

यह काम करने लगता है, खासकर जब से यह HBase खोल में पात्रों से बचने के सामान्य प्रश्न संबोधित करते हैं। हम जो करते हैं, वह हमारे चाबियों को md5ing कर रहा था और इसका उपयोग कर रहा था, जो न केवल बहुत उबाऊ कुंजी (सभी हेक्स वर्ण) प्रदान करता है बल्कि सभी क्षेत्रों को अच्छी तरह से हिट करने के लिए उन्हें हमारी मेज पर फैलाता है। – whiterook6

0

आशा है कि आप टैब वर्ण बदल सकते हैं। :) हाँ कि एक बुरा विचार है के बाद से मानचित्र को कम नौकरियों परिसीमक के रूप में टैब का उपयोग करें, और उसके आम तौर पर एक बुरा विचार परिसीमक के रूप में किसी टैब या स्थान का उपयोग करने के लिए। परिसीमक के रूप में :):

आप एक डबल बृहदान्त्र (इस्तेमाल कर सकते हैं। लेकिन प्रतीक्षा करें, यूआरएल में यूआरएल में डबल-कोलन है तो क्या होगा? खैर, यूआरएल urlencode जब आप इसे HBase के लिए की दुकान - इस तरह से, आप एक मानक सीमांकक, और मुख्य सीमांकक के साथ संघर्ष नहीं होगा का URL हिस्सा है।

अजगर में:

import urllib 

DELIMITER = "::" 
urlkey = urllib.quote_plus(location) 

rowkey = item_id + DELIMITER + urlkey 
+0

मेरी टीम एचबीएस में हर समय एक डिलीमीटर के रूप में टैब का उपयोग करती है, क्योंकि हमारे डेटा में पता है कि इसमें टैब नहीं हो सकते हैं। मानचित्र कम करने या कुछ और के साथ कोई समस्या नहीं है। – Tony