2012-03-08 9 views
6

मैं कुछ दिनों के लिए हाइव के साथ खेल रहा हूं लेकिन मुझे अभी भी विभाजन के साथ कठिन समय है।मैं एक तालिका को HIVE के साथ कैसे विभाजित कर सकता हूं?

मैं कुछ महीनों के लिए हैडोप में अपाचे लॉग (संयोजन प्रारूप) रिकॉर्ड कर रहा हूं। वे पंक्ति पाठ प्रारूप में जमा हो जाती है, तारीख (Flume के माध्यम से) द्वारा विभाजित: /लॉग/yyyy/mm/dd/hh/*

उदाहरण:

/logs/2012/02/10/00/Part01xx (02/10/2012 12:00 am) 
/logs/2012/02/10/00/Part02xx 
/logs/2012/02/10/13/Part0xxx (02/10/2012 01:00 pm) 

combined log फ़ाइल में तारीख पीछा कर रहा है यह प्रारूप [10/फरवरी/2012: 00: 00: 00 -0800]

मैं अपने भौतिक विभाजन का उपयोग करने वाले हाइव में विभाजन के साथ बाहरी तालिका कैसे बना सकता हूं। मुझे हाइव विभाजन पर कोई अच्छा दस्तावेज नहीं मिल रहा है। मैंने पाया संबंधित प्रश्न जैसे:

मैं हाइव के साथ एक बाहरी तालिका में अपने लॉग लोड है, मैं समय के साथ विभाजन नहीं कर सकते हैं, यह अच्छा प्रारूप नहीं है के बाद से (फरवरी < => 02)। भले ही यह एक अच्छे प्रारूप में था, मैं एक निर्देशिका "10/02/2012: 00: 00: 00 -0800" को एकाधिक निर्देशिका "/ 2012/02/10/00" में कैसे बदलूं?

मैं अंततः अपने कच्चे लॉग को हाइव टेबल में बदलने के लिए सुअर स्क्रिप्ट का उपयोग कर सकता हूं लेकिन इस बिंदु पर मुझे अपनी रिपोर्टिंग करने के लिए सिर्फ छिद्र का उपयोग करना चाहिए।

उत्तर

5

यदि मैं सही ढंग से समझता हूं, तो आपके पास निर्देशिका लॉग से 4 स्तर गहरे फ़ोल्डर्स में फ़ाइलें हैं। उस स्थिति में, आप अपनी तालिका को पथ 'लॉग' के साथ बाह्य के रूप में परिभाषित करते हैं और 4 आभासी फ़ील्ड द्वारा विभाजित होते हैं: वर्ष, महीना, day_of_month, hour_of_day।

विभाजन आपके लिए फ्लूम द्वारा अनिवार्य रूप से किया जाता है।

संपादित करें 3/9: बहुत सारे विवरण इस बात पर निर्भर करते हैं कि फ्लूम वास्तव में फाइलें कैसे लिखता है।

CREATE TABLE table_name(fields...) 
PARTITIONED BY(log_year STRING, log_month STRING, 
    log_day_of_month STRING, log_hour_of_day STRING) 
format description 
STORED AS TEXTFILE 
LOCATION '/your user path/logs'; 

संपादित 3/15:: लेकिन सामान्य शब्दों में, अपने DDL कुछ इस तरह देखना चाहिए zzarbi अनुरोध के अनुसार, मैं एक टिप्पणी के बाद तालिका बनने जोड़ रहा, हाइव सूचित करने की आवश्यकता है विभाजन के बारे में बनाया गया। जब तक फ्ल्यूम या अन्य प्रक्रिया नए विभाजन बनाती है तब तक इसे बार-बार किया जाना चाहिए। मेरा उत्तर Create external with Partition प्रश्न पर देखें।

+0

तो क्या मैं तालिका का निर्माण दिखता हूं? और मैं उन विभाजनों का उपयोग करने के लिए एक प्रश्न पूछूंगा? – zzarbi

+0

उत्तर में मेरे संपादन देखें। – Olaf

+0

मुझे यह जांचना होगा कि जैसे ही मैं – zzarbi

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

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