2015-01-13 13 views
7

मेरे पास एक आरएमआई क्लस्टर है। प्रत्येक आरएमआई सर्वर में स्पार्क संदर्भ होता है। क्या विभिन्न स्पार्क संदर्भों के बीच आरडीडी साझा करने का कोई तरीका है?स्पार्क आरडीडी को 2 स्पार्क संदर्भों के बीच कैसे साझा करें?

उत्तर

3

नहीं, एक आरडीडी एक SparkContext से जुड़ा हुआ है। सामान्य विचार यह है कि आपके पास स्पार्क क्लस्टर और एक ड्राइवर प्रोग्राम है जो क्लस्टर को बताता है कि क्या करना है। इस ड्राइवर के पास SparkContext होगा और आरडीडी पर संचालन बंद कर देगा।

यदि आप एक ड्राइवर प्रोग्राम से दूसरे में आरडीडी को स्थानांतरित करना चाहते हैं, तो समाधान इसे पहले ड्राइवर में डिस्क (एस 3/एचडीएफएस/...) में लिखना और अन्य ड्राइवर में डिस्क से लोड करना है।

11

जैसा कि पहले से ही डैनियल डार्बोस ने कहा है, यह संभव नहीं है। स्पार्क में प्रत्येक वितरित वस्तु विशिष्ट संदर्भ से जुड़ी हुई है जिसका उपयोग DataFrame डेटासेट के मामले में आरडीडी, SQLContext के मामले में (SparkContext) बनाने के लिए किया गया है। यदि आप अनुप्रयोगों के बीच साझा ऑब्जेक्ट्स चाहते हैं तो आपको साझा संदर्भों का उपयोग करना होगा (उदाहरण के लिए spark-jobserver, Livy, या Apache Zeppelin देखें)। चूंकि RDD या DataFrame केवल एक छोटी स्थानीय वस्तु है, इसलिए साझा करने के लिए वास्तव में बहुत कुछ नहीं है।

डेटा साझा करना एक पूरी तरह से अलग समस्या है। आप मेमोरी कैश (Apache Ignite) में विशेष रूप से उपयोग कर सकते हैं या एप्लिकेशन के बीच स्विच करते समय विलंबता को कम करने के लिए मेमोरी फाइल सिस्टम (जैसे Alluxio - पूर्व टैचियन) में वितरित कर सकते हैं लेकिन आप वास्तव में इससे बच नहीं सकते हैं।

0

मेरी समझ में, आप मूल रूप से नहीं कर सकते हैं, आरडीडी डेटा नहीं है, बल्कि मूल डेटा से रूपांतरण/फ़िल्टर के माध्यम से डेटा बनाने का एक तरीका है।

एक और विचार, इसके बजाय अंतिम डेटा साझा करना है। तो, आप RDD एक डेटा की दुकान में, इस तरह के रूप में स्टोर करेगा: - HDFS (एक छत फ़ाइल आदि ..) - Elasticsearch - अपाचे प्रज्वलित (इन-स्मृति)

मुझे लगता है कि आप अपाचे प्रज्वलित प्यार करेंगे : https://ignite.apache.org/features/igniterdd.html

अपाचे प्रज्वलित स्पार्क RDD अमूर्त के एक कार्यान्वयन है, जो आसानी से अनेक स्पार्क नौकरियों भर में स्मृति में राज्य साझा करने के लिए अनुमति देता है या तो एक ही आवेदन के भीतर या अलग स्पार्क अनुप्रयोगों के बीच प्रदान करता है।

IgniteRDD कार्यान्वित किया जाता है एक वितरित प्रज्वलित कैश, जो या तो, स्पार्क काम को क्रियान्वित करने की प्रक्रिया, के भीतर या एक स्पार्क कार्यकर्ता पर या अपने स्वयं के क्लस्टर में तैनात किया जा सकता है पर एक दृश्य के रूप में है।

(मैं तुम्हें अपनी दस्तावेज़ीकरण खुदाई के लिए आप क्या देख रहे हैं खोजने के लिए करते हैं।)

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