2013-10-25 10 views
14

मैं 1300 पंक्तियाँ और 6 स्तंभों से मिलकर तालिका बनाने के लिए छत्ता में एक कोड लिख रहा हूँ:छत्ता QL में एक तालिका में एक कॉलम जोड़ें

create table test1 as SELECT cd_screen_function, 
    SUM(access_count) AS max_count, 
    MIN(response_time_min) as response_time_min, 
    AVG(response_time_avg) as response_time_avg, 
    MAX(response_time_max) as response_time_max, 
    SUM(response_time_tot) as response_time_tot, 
    COUNT(*) as row_count 
    FROM sheet WHERE ts_update BETWEEN unix_timestamp('2012-11-01 00:00:00') AND 
    unix_timestamp('2012-11-30 00:00:00') and cd_office = '016' 
    GROUP BY cd_screen_function ORDER BY max_count DESC, cd_screen_function; 

अब मैं access_count1 होते हैं जो के रूप में एक और स्तंभ जोड़ना चाहते हैं सभी 1300 पंक्तियों और मान के लिए एक अद्वितीय मूल्य sum(max_count) होगा। max_count मेरी मौजूदा तालिका में एक कॉलम है। मैं यह कैसे कर सकता हूँ? मैं इस कोड ALTER TABLE test1 ADD COLUMNS (access_count1 int) set default sum(max_count);

उत्तर

21

cannot add a column with a default value in Hive द्वारा तालिका को बदलने की कोशिश कर रहा हूं। आपके पास right syntax for adding the columnALTER TABLE test1 ADD COLUMNS (access_count1 int); है, आपको बस default sum(max_count) से छुटकारा पाने की आवश्यकता है। कॉलम जोड़ने के परिणामस्वरूप आपकी तालिका का बैकिंग करने वाली फ़ाइलों में कोई भी परिवर्तन नहीं होगा। Hive handles the "missing" data by interpreting NULL as the value for every cell in that column

तो अब आपको कॉलम को पॉप्युलेट करने की आवश्यकता की समस्या है। दुर्भाग्य से हाइव में आपको पूरी तालिका को फिर से लिखना होगा, इस बार स्तंभ के साथ पॉप्युलेट किया गया था। नए कॉलम के साथ अपनी मूल क्वेरी को फिर से शुरू करना आसान हो सकता है। या आप अब आपके पास मौजूद तालिका में कॉलम जोड़ सकते हैं, फिर नए कॉलम के लिए इसके सभी कॉलम प्लस वैल्यू का चयन करें।

आपके पास हमेशा वांछित डिफ़ॉल्ट पर कॉलम COALESCE विकल्प है और इसे अब NULL छोड़ दें। यह विकल्प विफल रहता है जब आप NULL चाहते हैं ताकि आपके वांछित डिफ़ॉल्ट से कोई अर्थ अलग हो। यह आपको COALESCE को हमेशा याद रखने पर भी निर्भर करता है।

यदि आप हाइव का समर्थन करने वाली फ़ाइलों से निपटने के लिए अपनी क्षमताओं में बहुत भरोसेमंद हैं, तो आप उन्हें सीधे अपना डिफ़ॉल्ट जोड़ने के लिए भी बदल सकते हैं। आम तौर पर मैं इसके खिलाफ सिफारिश करता हूं क्योंकि ज्यादातर समय यह धीमा और अधिक खतरनाक होगा। ऐसा कुछ मामला हो सकता है जहां यह समझ में आता है, इसलिए मैंने पूर्णता के लिए यह विकल्प शामिल किया है।

+0

यदि मैं एकाधिक कॉलम जोड़ना चाहता हूं तो यह कैसे काम करता है? – Arun

+4

'वैकल्पिक तालिका परीक्षण 1 जोड़ें COLUMNS (access_count1 int, access_count2 दिनांक, access_count3 स्ट्रिंग, ...); ' –

+0

क्या ऑर्डर महत्वपूर्ण है जिसमें हम कॉलम जोड़ते हैं? –

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