मैं python2.7 में पांडा और पायरो का उपयोग करके एक csv फ़ाइल को लकड़ी की छत में बदलने की कोशिश कर रहा हूँ।

मुझे pa.Table.from_pandas(df) रूपांतरण से स्ट्रिंग को स्ट्रिंग में बदलने में समस्या हो रही है। यह डेटा प्रकार को 'बाइनरी' में परिवर्तित करता रहता है और इससे AWS Glue बहुत दुखी होता है।

मैंने एक अनुकूलित स्कीमा का प्रयास किया है यह काम नहीं करेगा।

fields = []
for name, type in dtypes.items():
        fields.append(pa.field(name, type))
my_schema = pa.schema(fields)
df = pd.read_csv(StringIO(file), delimiter="\t")
table = pa.Table.from_pandas(df)

पहले सीएसवी में पढ़ते समय डेटाटाइप निर्दिष्ट कर रहा था, जो या तो काम नहीं करता था। इसके अलावा replace_schema_metadata() की कोशिश की, लेकिन यह बहुत कुछ नहीं करता है क्योंकि यह वास्तविक स्कीमा नहीं है।

4
user5948130 27 मार्च 2018, 07:35

2 जवाब

सबसे बढ़िया उत्तर

Python 2 का str प्रकार वास्तव में Parquet की BINARY की परिभाषा के समान सामग्री है, इस प्रकार str ऑब्जेक्ट वाले सभी कॉलम binary के रूप में सहेजे जाएंगे। पायथन 3 में, फिर उन्हें bytes के रूप में सही ढंग से लोड किया जाना चाहिए। कॉलम को स्ट्रिंग / UTF-8 के रूप में Parquet में स्टोर करने के लिए, आपको कॉलम को unicode ऑब्जेक्ट में बदलना होगा।

4
Uwe L. Korn 27 मार्च 2018, 07:53

@ मैडी शियाप्पा, कृपया ध्यान दें कि चूंकि आपने एडब्ल्यूएस गोंद का उल्लेख किया था, वर्तमान में केवल शुद्ध पायथन पुस्तकालय समर्थित हैं। "

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

-1
Yuva 27 मार्च 2018, 13:46