मैं वर्तमान में जीसीएस से BigQuery में कुछ सीएसवी फाइलों को आयात करने के लिए जावा उपयोगिता लिख रहा हूं। मैं इसे आसानी से bq load
तक प्राप्त कर सकता हूं, लेकिन मैं इसे डेटाफ्लो नौकरी का उपयोग करके करना चाहता था। इसलिए मैं डेटाफ्लो की पाइपलाइन और पैराडो ट्रांसफार्मर का उपयोग कर रहा हूं (BigQueryIO पर इसे लागू करने के लिए टेबलरो लौटाता है) और मैंने रूपांतरण के लिए स्ट्रिंगट्रो कनवर्टर() बनाया है। यहां वास्तविक समस्या शुरू होती है - मुझे गंतव्य तालिका के लिए स्कीमा निर्दिष्ट करने के लिए मजबूर होना पड़ता है हालांकि मैं एक नई तालिका नहीं बनाना चाहता हूं यदि यह अस्तित्व में नहीं है - केवल डेटा लोड करने का प्रयास कर रहा है। इसलिए मैं टेबलरो के लिए कॉलम नाम मैन्युअल रूप से सेट नहीं करना चाहता क्योंकि मेरे पास लगभग 600 कॉलम हैं।किसी भी स्तंभ नाम या स्कीमा के बिना किसी BigQuery तालिका में एक CSV फ़ाइल आयात करने के लिए कैसे?
public class StringToRowConverter extends DoFn<String, TableRow> {
private static Logger logger = LoggerFactory.getLogger(StringToRowConverter.class);
public void processElement(ProcessContext c) {
TableRow row = new TableRow();
row.set("DO NOT KNOW THE COLUMN NAME", c.element());
c.output(row);
}
}
इसके अलावा, यह माना जाता है कि पहले से ही मेज BigQuery डाटासेट में मौजूद है और मैं इसे बनाने के लिए की जरूरत नहीं है, और यह भी एक CSV फ़ाइल को सही क्रम में स्तंभ हैं।
यदि इस परिदृश्य में कोई समाधान नहीं है और डेटा लोड के लिए कॉलम नाम की आवश्यकता है, तो मैं इसे CSV फ़ाइल की पहली पंक्ति में रख सकता हूं।
किसी भी मदद की सराहना की जाएगी।