मैं HBase में निगलना के लिए अपाचे सुअर का उपयोग कर पसंद है क्योंकि यह, सरल, सटीक, और लचीला है।
यहां एक सुअर स्क्रिप्ट है जो आपके लिए टेबल और कॉलम परिवार बनाने के बाद आपके लिए काम करेगी। तालिका और स्तंभ परिवार बनाने के लिए, आप यह करेंगे:
$ hbase shell
> create 'mydata', 'mycf'
ले जाएँ HDFS करने के लिए फ़ाइल:
$ hadoop fs -put /home/file.txt /user/surendhar/file.txt
फिर, HBaseStorage साथ स्टोर करने के लिए सुअर स्क्रिप्ट लिखने (आप देखने के लिए हो सकता है ऊपर कैसे set up and run Pig के लिए):
A = LOAD 'file.txt' USING PigStorage(',') as (strdata:chararray, intdata:long);
STORE A INTO 'hbase://mydata'
USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(
'mycf:intdata');
ध्यान दें कि ऊपर स्क्रिप्ट में, कुंजी जा रहा है strdata
किया जाना है। यदि आप किसी चीज़ से अपनी कुंजी बनाना चाहते हैं, तो कुंजी उत्पन्न करने के लिए FOREACH कथन का उपयोग करें। एचबीएस स्टोरेज मानता है कि पिछले मामले में पहली बात (A::strdata
इस मामले में) कुंजी है।
कुछ अन्य विकल्प होगा:
- एक Java MapReduce नौकरी लिखें जैसा कि ऊपर एक ही बात करते हैं।
- the client के साथ सीधे HTable के साथ इंटरैक्ट करें और पंक्ति-दर-पंक्ति में डालें। यह केवल बहुत छोटी फाइलों के साथ किया जाना चाहिए।
किसी प्रकार की स्क्रिप्ट (यानी, sed, perl, पायथन) का उपयोग करके hbase खोल के साथ डेटा को पुश करें जो सीएसवी की लाइनों को खोल put
कमांड में बदल देता है। दोबारा, यह केवल तभी किया जाना चाहिए जब रिकॉर्ड्स की संख्या कम हो।
$ cat /home/file.txt | transform.pl
put 'mydata', 'one', 'mycf:intdata', '1'
put 'mydata', 'two', 'mycf:intdata', '2'
put 'mydata', 'three', 'mycf:intdata', '3'
$ cat /home/file.txt | transform.pl | hbase shell
स्रोत
2011-12-27 14:42:48
क्या आप अपने महत्वपूर्ण हो करना चाहते हैं? क्या आप उन्हें एक कॉलम परिवार या दो अलग-अलग लोगों में धक्का दे रहे हैं? –