2011-12-27 20 views
12

से डेटा आयात करें मैंने हैडऑप और hbase cdh3u2 स्थापित किया है। हैडऑप में मेरे पास /home/file.txt पथ पर एक फ़ाइल है। इसमें डेटाHDFS से HBase (cdh3u2)

one,1 
two,2 
three,3 

मैं इस फ़ाइल को hbase में आयात करना चाहता हूं। उसमें, पहले फ़ील्ड को स्ट्रिंग के रूप में पार्स किया जाना चाहिए, और दूसरा फ़ील्ड पूर्णांक के रूप में पार्स किया जाना चाहिए, और फिर इसे hbase में धक्का देना चाहिए। मुझे dvance में इस

aThanks करने के लिए मदद ....

+0

क्या आप अपने महत्वपूर्ण हो करना चाहते हैं? क्या आप उन्हें एक कॉलम परिवार या दो अलग-अलग लोगों में धक्का दे रहे हैं? –

उत्तर

20

मैं 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 
    
+0

हे डोनाल्ड। क्या आप इस पोस्ट को देखेंगे? http://stackoverflow.com/questions/21126483/how-to-have-pig-store-rows-in-hbase-as-text-and-not-bytes –

+0

डोनाल्ड आप इस उत्तर को लिखने के लिए नायक हैं! –

+0

उस पीआईजी लिपि में आवश्यक एचबीएएस जार पंजीकृत करने के लिए मत भूलना। उस तरह "रजिस्ट्रार /usr/lib/hbase/lib/*.jar;" – PinoSan

संबंधित मुद्दे