मैं स्पार्क एसक्यूएल जहां जिसके परिणामस्वरूप स्कीमा तरह लग रहा है का उपयोग कर लकड़ी प्रारूप में कुछ डेटा लिखने के बाद:स्पार्क एसक्यूएल में नेस्टेड कॉलम के साथ क्वेरी प्रदर्शन अलग क्यों है?
root
|-- stateLevelCount1: integer (nullable = false)
|-- stateLevelCount2: integer (nullable = false)
|-- stateLevelCount3: integer (nullable = false)
|-- stateLevelCount4: integer (nullable = false)
|-- stateLevelCount5: integer (nullable = false)
|-- countryLevelCount1: integer (nullable = false)
|-- countryLevelCount2: integer (nullable = false)
|-- countryLevelCount3: integer (nullable = false)
|-- countryLevelCount4: integer (nullable = false)
|-- countryLevelCount5: integer (nullable = false)
|-- globalCount1: integer (nullable = false)
|-- globalCount2: integer (nullable = false)
|-- globalCount3: integer (nullable = false)
|-- globalCount4: integer (nullable = false)
|-- globalCount5: integer (nullable = false)
:
root
|-- stateLevel: struct (nullable = true)
| |-- count1: integer (nullable = false)
| |-- count2: integer (nullable = false)
| |-- count3: integer (nullable = false)
| |-- count4: integer (nullable = false)
| |-- count5: integer (nullable = false)
|-- countryLevel: struct (nullable = true)
| |-- count1: integer (nullable = false)
| |-- count2: integer (nullable = false)
| |-- count3: integer (nullable = false)
| |-- count4: integer (nullable = false)
| |-- count5: integer (nullable = false)
|-- global: struct (nullable = true)
| |-- count1: integer (nullable = false)
| |-- count2: integer (nullable = false)
| |-- count3: integer (nullable = false)
| |-- count4: integer (nullable = false)
| |-- count5: integer (nullable = false)
मैं भी एक और अधिक फ्लैट स्कीमा कि इस तरह दिखता है में एक ही डेटा बदल सकता है
अब जब मैं global.count1 जैसे कॉलम पर पहले डेटा सेट पर कोई क्वेरी चलाता हूं, तो दूसरे डेटा सेट में globalCount1 से पूछताछ करने में बहुत अधिक समय लगता है। इसके विपरीत, पैराक्वेट में पहला डेटा सेट लिखना दूसरा डेटा सेट लिखने से बहुत छोटा होता है। मुझे पता है कि मेरा डेटा लकड़ी के कारण कॉलमर फैशन में संग्रहीत है, लेकिन मैं सोच रहा था कि सभी नेस्टेड कॉलम व्यक्तिगत रूप से एक साथ संग्रहीत किए जाएंगे। उदाहरण के लिए पहले डेटा सेट में, ऐसा लगता है कि संपूर्ण 'वैश्विक' कॉलम को 'global.count1', 'global.count2' आदि के विपरीत एक साथ संग्रहीत किया जा रहा है। मूल्यों को एक साथ संग्रहीत किया जा रहा है। क्या यह अपेक्षित व्यवहार है?