2017-07-27 18 views
6

पर स्पार्क डेटाफ्रेम मैं पाइथन में थोड़ी देर के लिए स्पार्क के साथ अपाचे तीर का उपयोग कर रहा हूं और पांडों को मध्यस्थ के रूप में उपयोग करके डेटाफ्रेम और तीर वस्तुओं के बीच आसानी से परिवर्तित करने में सक्षम हूं।तीर

हाल ही में, हालांकि, मैं स्पार्क के साथ बातचीत के लिए पाइथन से स्कैला में स्थानांतरित हो गया हूं और तीर का उपयोग स्कैला (जावा) में सहज नहीं है क्योंकि यह पायथन में है। मेरी मूल आवश्यकता एक स्पार्क डेटाफ्रेम (या आरडीडी को आसानी से परिवर्तनीय होने के बाद) को तीर ऑब्जेक्ट में जितनी जल्दी हो सके परिवर्तित करना है। मेरा प्रारंभिक विचार पहले छत में परिवर्तित करना था और लकड़ी से तीर तक जाना था क्योंकि मुझे याद आया कि पाइरो लकड़ी से निकल सकता है। हालांकि, और अगर मैं गलत हूं, तो कृपया मुझे सही करें, थोड़ी देर के लिए तीर जावा दस्तावेज़ों को देखने के बाद मुझे तीर फ़ंक्शन पर एक लकड़ी नहीं मिल सका। क्या यह कार्य जावा संस्करण में मौजूद नहीं है? क्या तीर ऑब्जेक्ट में स्पार्क डेटाफ्रेम प्राप्त करने का कोई और तरीका है? शायद डेटाफ्रेम के कॉलम को सरणी में परिवर्तित करने के बाद तीर ऑब्जेक्ट्स में कनवर्ट करना?

किसी भी मदद की बहुत सराहना की जाएगी। धन्यवाद

संपादित करें: निम्न लिंक मिला जो एक लकड़ी की स्कीमा को एक तीर स्कीमा में परिवर्तित करता है। लेकिन यह एक छत फ़ाइल से एक तीर वस्तु वापस जाने के लिए है कि मैं जरूरत नहीं लगता है: https://github.com/apache/parquet-mr/blob/70f28810a5547219e18ffc3465f519c454fee6e5/parquet-arrow/src/main/java/org/apache/parquet/arrow/schema/SchemaConverter.java

+0

वेस मैककिनी इस प्रश्न का उत्तर देने के लिए सबसे अच्छे लोगों [IMHO] में से एक है। मैंने प्रतिक्रिया प्राप्त करने की उम्मीद में उसे ट्वीट किया (https://twitter.com/gstaubli/status/895763929653157888)। उंगलियों को पार कर। – Garren

उत्तर

3

वहाँ एक लकड़ी < नहीं है -> तीर कनवर्टर जावा में एक पुस्तकालय के रूप में अभी तक उपलब्ध। आप प्रेरणा के लिए ड्रेमियो (https://github.com/dremio/dremio-oss/tree/master/sabot/kernel/src/main/java/com/dremio/exec/store/parquet) में तीर-आधारित लकड़ी की छत कनवर्टर पर एक नज़र डाल सकते हैं। मुझे यकीन है कि अपाचे पैराक्वेट परियोजना इस कार्यक्षमता को लागू करने में आपके योगदान का स्वागत करेगी।

हमने सी ++ कार्यान्वयन में पैराक्वेट के लिए एक तीर पाठक/लेखक विकसित किया है: https://github.com/apache/parquet-cpp/tree/master/src/parquet/arrow। नेस्टेड डेटा समर्थन अभी तक पूरा नहीं हुआ है, लेकिन अगले 6-12 महीनों के भीतर इसे और अधिक पूरा होना चाहिए (जितनी जल्दी योगदानकर्ता चरणबद्ध हो)।

+0

पक्ष प्रश्न के लिए खेद है लेकिन यह समझने की कोशिश कर रहा है कि 'अपाचे तीर' के प्रदर्शन लाभ जावा कार्यान्वयन के साथ कैसे प्राप्त किए जाते हैं। Https://github.com/apache/arrow/tree/master/java/memory/src/main/java/org/apache/arrow/memory और https://github.com/apache/arrow/tree/ पर देख रहे हैं मास्टर/सीपीपी/src/arrow/पायथन मुझे लगता है कि 'तीर-सीपीपी' सख्ती से पायथन के लिए है और जावा/जेवीएम के साथ प्रयोग नहीं किया जा रहा है। क्या यह सही है, वेस? – SemanticBeeng