2016-08-16 9 views
6

के माध्यम से BigQuery को बड़ी मात्रा में डेटा डालें, मेरे पास बड़ी सीएसवी फ़ाइलें हैं और एक्सेल फाइलें हैं जहां मैंने उन्हें पढ़ा है और आवश्यक फ़ील्ड और प्रकारों के आधार पर गतिशील रूप से आवश्यक तालिका स्क्रिप्ट बनाएं। फिर बनाई गई तालिका में डेटा डालें।Bigquery-Python लाइब्रेरी

मैंने this पढ़ा है और समझा है कि मुझे उन्हें बड़ी संख्या में डेटा के लिए tabledata.insertAll() के बजाय jobs.insert() के साथ भेजना चाहिए।

इस तरह मैं इसे कॉल करता हूं (छोटी फ़ाइलों के लिए काम करता है बड़े नहीं)।

result = client.push_rows(datasetname,table_name,insertObject) # insertObject is a list of dictionaries 

जब मैं लाइब्रेरी के push_rows का उपयोग करता हूं तो यह विंडोज़ में यह त्रुटि देता है।

[Errno 10054] An existing connection was forcibly closed by the remote host 

और यह उबंटू में है।

[Errno 32] Broken pipe 

तो जब मैं BigQuery-Python कोड माध्यम से चला गया यह table_data.insertAll() उपयोग करता है।

मैं इस पुस्तकालय के साथ यह कैसे कर सकता हूं? मुझे पता है कि हम Google स्टोरेज के माध्यम से अपलोड कर सकते हैं लेकिन मुझे इसके साथ सीधे अपलोड विधि की आवश्यकता है।

उत्तर

2

बड़ी फ़ाइलों को संभालने पर स्ट्रीमिंग का उपयोग नहीं होता है, लेकिन बैच लोड: स्ट्रीमिंग आसानी से प्रति सेकंड 100,000 पंक्तियों को संभालने में सक्षम होगी। स्ट्रीमिंग के लिए यह बहुत अच्छा है, लेकिन बड़ी फ़ाइलों को लोड करने के लिए नहीं।

जुड़ा नमूना कोड सही चीज (स्ट्रीमिंग के बजाए बैच) कर रहा है, इसलिए हम जो देखते हैं वह एक अलग समस्या है: यह नमूना कोड इस डेटा को सीधे BigQuery में लोड करने का प्रयास कर रहा है, लेकिन POST भाग के माध्यम से अपलोड विफल हो जाता है । gsutil में केवल एक सादा पोस्ट की तुलना में अधिक मजबूत अपलोडिंग एल्गोरिदम है।

समाधान: POST के माध्यम से डेटा के बड़े हिस्से को लोड करने के बजाय, उन्हें पहले Google क्लाउड स्टोरेज में ले जाएं, फिर BigCS को GCS से फ़ाइलों को पढ़ने के लिए बताएं।

भी देखें BigQuery script failing for large file

+0

तुम सिर्फ ओ पी के लिए एक लिंक जोड़ दिया ?! –

+1

ओह, रिकर्सन फिक्सिंग! –

+0

@FelipeHoffa gsutil क्या मैं पाइथन कोड के अंदर उपयोग कर सकता हूं? सीएसवी फ़ाइल पथ सीधे अपलोड करते समय कुछ कॉलम प्रकार के मुद्दे थे। इसलिए मैं सीएसवी पढ़ सकता हूं और तदनुसार खेतों को कास्ट कर सकता हूं। ऑब्जेक्ट डालने के बाद तालिका में ऑब्जेक्ट डालने का कोई तरीका नहीं है (शब्दकोशों की एक सूची हो सकती है)? –

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