2013-03-25 9 views
39

मेरे पास 1000+ विभाजन वाले टेबल हैं।हाइव: तालिका के सभी विभाजन कैसे दिखाएं?

"Show partitions" कमांड केवल कुछ ही विभाजनों को सूचीबद्ध करता है।

मैं सभी विभाजन कैसे दिखा सकता हूं?

अद्यतन:

  1. मैंने पाया "show partitions" कमांड केवल वास्तव में 500 विभाजन सूचीबद्ध करता है।

  2. "select ... where ..." केवल 500 विभाजन को संसाधित करता है!

उत्तर

49

CLI कुछ सीमा जब ouput प्रदर्शित किया जाता है। मैं स्थानीय फ़ाइल में उत्पादन निर्यात करने के लिए सुझाव देते हैं:

$hive -e 'show partitions table;' > partitions 
+1

एक ही परिणाम। और यह केवल 500 विभाजन दिखाता है। मुझे नहीं पता कि जादू संख्या 500 कहां से है। –

+1

तब कोई विचार नहीं है। यह बहुत अजीब है। अगर आप इसे हल करते हैं या इसका स्रोत पाते हैं तो हमें पोस्ट रखें। जीएल! शायद बेवकूफ लेकिन क्या आप सुनिश्चित हैं कि 500 ​​से अधिक विभाजन हैं? – www

+8

"सेट cassandra.connection.slice आकार = 10000;" द्वारा हल की गई समस्या। हो सकता है कि यह हाइव के लिए डेटास्टैक्स का बहिष्कार है। –

2

आप "विभाजन" की तालिका में हाइव MetaStore टेबल, विभाजन जानकारी देख सकते हैं। आप विशेष तालिका विभाजन पूछने के लिए "विभाजन" में "टीबीएलएस" शामिल हो सकते हैं।

1

ठीक है, मैं & से ऊपर wmky के उत्तर को विस्तारित करके यह उत्तर लिख रहा हूं, यह मानते हुए कि आपने डर्बी के बजाय अपने मेटास्टोर के लिए mysql कॉन्फ़िगर किया है।

select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='<table_name>'); 

उपर्युक्त क्वेरी आपको विभाजन कॉलम के सभी संभावित मान देता है।

उदाहरण:

hive> desc clicks_fact; 
OK 
time     timestamp         
..        
day      date           
file_date    varchar(8)         

# Partition Information  
# col_name    data_type    comment    

day      date           
file_date    varchar(8)         
Time taken: 1.075 seconds, Fetched: 28 row(s) 

मैं विभाजन कॉलम के मूल्यों को लाने के लिए जा रहा हूँ।

mysql> select PART_NAME FROM PARTITIONS WHERE TBL_ID=(SELECT TBL_ID FROM TBLS WHERE TBL_NAME='clicks_fact'); 
+-----------------------------------+ 
| PART_NAME       | 
+-----------------------------------+ 
| day=2016-08-16/file_date=20160816 | 
| day=2016-08-17/file_date=20160816 | 
.... 
.... 
| day=2017-09-09/file_date=20170909 | 
| day=2017-09-08/file_date=20170909 | 
| day=2017-09-09/file_date=20170910 | 
| day=2017-09-10/file_date=20170910 | 
+-----------------------------------+ 

1216 rows in set (0.00 sec) 

सभी विभाजन कॉलम लौटाता है।

नोट: DB_ID पर JOIN तालिका DBS जब वहाँ एक डीबी शामिल हैं (यानी, एक से अधिक डीबी के एक ही TABLE_NAME है जब) CLI के रूप में

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