2016-03-18 12 views
5

में सबसे हाल ही विभाजन मैं partitioned तालिका है खोजने के लिए। मुझे इस तालिका में नवीनतम विभाजन खोजने की आवश्यकता है और मेरे डेटा को संसाधित करने के लिए इसका उपयोग करें। क्वेरी सब विभाजन की सूची मिल रहा है:कैसे छत्ता तालिका

use db; 
show partitions table_name; 

मैं एक प्रश्न की जरूरत है इन विभाजनों के नवीनतम खोजने के लिए। विभाजन

ingest_date=2016-03-09 

मैंने अधिकतम() का उपयोग करने की कोशिश की जिसने मुझे गलत परिणाम दिया। मैं

select max(ingest_date) from db.table_name; 

यह मैं उम्मीद उत्पादन देना होगा करके संपूर्ण तालिका के माध्यम से पार करने के लिए .. लेकिन 1 जगह में विभाजन होने के पूरे मुद्दे को मारने नहीं करना चाहती।

वहाँ एक और अधिक कुशल छत्ता तालिका के लिए नवीनतम विभाजन पाने के लिए क्वेरी है?

+0

की संभावित डुप्लिकेट [हाइव: एक तालिका के सभी विभाजनों को दिखाने के लिए कैसे] (http://stackoverflow.com/questions/15616290/hive-how-to-show-all-partitions-of-a-table) – zero323

+0

ओह, हाइव आभासी तालिकाओं के रूप में मेटाडाटा का खुलासा नहीं करता है - एक 'SYS' या' INFORMATION_SCHEMA' डेटाबेस की तरह कुछ भी। हाइव टेबल के विभाजन को सूचीबद्ध करने का एकमात्र प्रभावी तरीका ** मेटास्टोर जावा एपीआई ** का उपयोग करना है। या एचडीएफएस ** _ (वास्तव में काफी सरल) में विभाजन को व्यवस्थित करने के तरीके को रिवर्स-इंजीनियर करने के लिए _ फिर निर्देशिकाओं की सूची बनाएं, उम्मीद है कि एचडीएफएस और मेटास्टोर सिंक में 100% हैं। –

+0

या, आप * (MySQL या PostgreSQL में शायद) सीधे Metastore डेटाबेस क्वेरी कर सकता है, तो *, रिवर्स इंजीनियर डेटा मॉडल और आप की तरह किसी भी एसक्यूएल चलाते हैं। प्रतिक्रिया के लिए धन्यवाद –

उत्तर

4

आप "शो विभाजन" का उपयोग कर सकते हैं:

hive -e "set hive.cli.print.header=false;show partitions table_name;" | tail -1 | cut -d'=' -f2 

यह आपको "2016/03/09" आउटपुट के रूप में दे देंगे।

+0

... लेकिन यह चारों ओर एक त्वरित प्रश्न .... इस बात की संभावना है, जैसा कि एक छत्ता तालिका के संख्या विभाजन बढ़ने ... उदाहरण के एक लाख कहते हैं ... कि आदेश अभी भी होगा कम समय में काम या निष्पादन? – Raja

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