2016-01-20 6 views
8

में लकड़ी की छत पर हाइव टेबल का उपयोग करना मैं दो पैराक्वेट फ़ाइलों वाले फ़ोल्डर पर स्कीमा स्ट्रिंग, स्ट्रिंग, डबल के साथ एक हाइव टेबल बनाने की कोशिश कर रहा हूं। पहली लकड़ी की छत फ़ाइल स्कीमा स्ट्रिंग, स्ट्रिंग, डबल है और दूसरी फ़ाइल की स्कीमा स्ट्रिंग, डबल, स्ट्रिंग है।पिग

CREATE EXTERNAL TABLE dynschema (
trans_date string, 
currency string, 
rate double) 
STORED AS PARQUET 
LOCATION '/user/impadmin/test/parquet/evolution/'; 

मैं सुअर (0.14) स्क्रिप्ट में हाइव टेबल का उपयोग करने की कोशिश कर रहा हूं। org.apache.hadoop.hive.serde2.io.DoubleWritable

कौन सा मुझे लगता है का निरीक्षण नहीं किया जा सकता वजह से है:

A = LOAD 'dynschema' USING org.apache.hive.hcatalog.pig.HCatLoader(); 

DUMP A; 

लेकिन मैं त्रुटि

java.lang.UnsupportedOperationException मिल दूसरी फ़ाइल की स्कीमा तालिका स्कीमा से अलग है क्योंकि पहली फ़ाइल का विभाजन सफलतापूर्वक पढ़ा जाता है लेकिन दूसरी फ़ाइल के विभाजन को पढ़ने के दौरान यह अपवाद होता है।

मैं भी HCatRecordReader's कोड में देखा और कोड

DefaultHCatRecord dr = new DefaultHCatRecord(outputSchema.size()); 
    int i = 0; 
    for (String fieldName : outputSchema.getFieldNames()) { 
    if (dataSchema.getPosition(fieldName) != null) { 
     dr.set(i, r.get(fieldName, dataSchema)); 
    } else { 
     dr.set(i, valuesNotInDataCols.get(fieldName)); 
    } 
    i++; 
    } 

यहाँ, मैं देख रहा हूँ उत्पादन स्कीमा के लिए डेटा स्कीमा से रूपांतरण के तर्क है कि वहाँ के इस टुकड़े मिल गया, लेकिन थोड़ी देर डीबगिंग, मैं वहाँ पाया स्कीमा दोनों में कोई अंतर नहीं है।

कृपया मदद करते हैं, छत्ता मेज से डेटा पढ़ने की

  1. सुअर समर्थन ऐसे मामलों अलग स्कीमा के साथ भर में तैयार एकाधिक छत फ़ाइलें मुझे खोजने के लिए।

  2. यदि हां, तो यह कैसे करें।

+0

यदि आप स्कीमा जानते हैं, तो आप सुअर पैराक्वेट लोडर का उपयोग पढ़ने के लिए कर सकते हैं फ़ाइलें और स्कीमा मैन्युअल रूप से निर्दिष्ट करें जो स्कीमा विकास को ट्रिगर करना चाहिए। मुझे यकीन नहीं है कि यह इस विशिष्ट मामले में मदद करेगा, हालांकि एक स्कीमा विकास करना मुश्किल लगता है। – LiMuBei

+0

क्या यह एवरो के साथ भी मामला होगा? – SaurabhG

+0

पता नहीं कैसे सुअर एवरो स्टोरेज काम करता है। मुझे लगता है कि आप मैन्युअल रूप से स्कीमा भी निर्दिष्ट कर सकते हैं। – LiMuBei

उत्तर

1

आप 2 अलग स्कीमा के साथ फ़ाइलें हैं, तो निम्न समझदार हो रहा है:

  1. फ़ाइलों को विभाजित है, जो स्कीमा वे
  2. उनमें से बाहर
  3. टेबल बनाने के आधार पर
  4. यदि वांछनीय है, तो अलग-अलग टेबल लोड करें और उन्हें एक सुपरटेबल
संबंधित मुद्दे