स्पार्क 2.1 और स्कैला 2.11 से कॉलम जोड़ना। मेरे पास एक बड़ा Map[String,Date]
है जिसमें इसमें 10 के कुंजी/मूल्य जोड़े हैं। मैं भी 10K JSON स्पार्क के लिए एक फाइल सिस्टम है कि पहुँचा जा सकता है पर रहने वाले फ़ाइलें:स्पार्क डेटासेट में JSON फ़ाइलों को पढ़ना और एक अलग मानचित्र
mnt/
some/
path/
data00001.json
data00002.json
data00003.json
...
data10000.json
नक्शे में प्रत्येक केवी जोड़ी अपने संबंधित JSON फ़ाइल से मेल खाती है (इसलिए 1 मानचित्र केवी जोड़ी, data00001.json
से मेल खाती है आदि)
मैं इन सभी JSON फ़ाइलों को 1 बड़े स्पार्क Dataset
में पढ़ना चाहता हूं और, जबकि मैं इसमें हूं, इस डेटासेट में दो नए कॉलम जोड़ें (जो JSON फ़ाइलों में मौजूद नहीं है)। जब मैं withColumn
विधियों को हटाता हूं और allData.show()
करता हूं तो JSON एक एकल डेटासेट में फ़ाइलें करता है। तो मैं वहां सब अच्छा हूँ।
मैं किसके साथ संघर्ष कर रहा हूं: मैं दो नए कॉलम कैसे जोड़ूं और फिर सभी कुंजी/मूल्य मानचित्र तत्वों को सही तरीके से निकालूं?
मैं '' 'Dataframe.union''' का उपयोग करने के लिए अपनी सामान्य टिप्पणी जोड़ूंगा: इसे कुछ हज़ार बार से अधिक न करें। यदि आप फ़ाइलों की संख्या बड़ी है, तो निष्पादन ग्राफ अव्यवहारिक रूप से बड़ा हो जाएगा। वर्तमान हैकी विकल्प अंतर्निहित आरडीडी पर '' 'स्पार्ककॉन्टेक्स्ट.ऑनियन (आरडीडी *)' '' का उपयोग करना है। यह डीएजी flattens। –