मैं निम्नलिखित दो विकल्पों में से एक की सिफारिश करेंगे:
रिमोट डिबगिंग & IntelliJ विचार के "का मूल्यांकन अभिव्यक्ति"
यहाँ मूल विचार यह है कि आप की तरह अपने अनुप्रयोग डिबग तुम अगर यह सिर्फ एक साधारण था आपके आईडीई के भीतर से कोड का टुकड़ा डीबग किया गया। Run->Evaluate expression
फ़ंक्शन आपको प्रोटोटाइप कोड करने की अनुमति देता है और आप डीबगर के सामान्य परिवर्तनीय डिस्प्ले, चरण (ओवर) आदि कार्यक्षमता के अधिक का उपयोग कर सकते हैं।
- सेटअप दूरस्थ डीबगिंग के लिए आईडीई, और
- आपूर्ति दूरस्थ डीबगिंग के लिए सही जावा विकल्पों के साथ आवेदन: हालांकि, बाद से आप अपने आईडीई के भीतर से आवेदन नहीं चला रहे हैं, तो आप की जरूरत है।
1 के लिए, Run->Edit configurations
के लिए जाने के ऊपर दाहिने हाथ कोने में +
बटन हिट, दूरस्थ चयन करें, और Command line arguments for running remote JVM
(official help) के तहत पाठ क्षेत्र की सामग्री की नकल।
2 के लिए, आप उन JVM विकल्पों, जैसे पारित करने के लिए SPARK_SUBMIT_OPTS
वातावरण चर का उपयोग कर सकते हैं:
SPARK_SUBMIT_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" \
$SPARK_HOME/bin/spark-submit --class Main --master "spark://127.0.0.1:7077" \
./path/to/foo-assembly-1.0.0.jar
अब आप debug
बटन हिट कर सकते हैं और breakpoints आदि
अपाचे टसेपेल्लिन
सेट
यदि आप अधिक स्क्रिप्ट-शैली स्कैला लिख रहे हैं, तो आपको इसे ज़ेप्पेलिन स्पार्क स्कैला दुभाषिया में लिखना उपयोगी हो सकता है। हालांकि यह जुपीटर/आईपीथन नोटबुक/ipython
शैल (i
) pdb
से अधिक है, यह आपको रनटाइम पर क्या चल रहा है इसका निरीक्षण करने की अनुमति देता है। यह आपको अपने डेटा आदि को ग्राफ करने की अनुमति देगा। मैं these docs से शुरू करूंगा।
चेतावनी
मुझे लगता है कि इसके बाद के संस्करण केवल डिबगिंग की अनुमति होगी कोड ड्राइवर नोड पर चल रहा है, कार्यकर्ता नोड्स पर नहीं (जो आपके वास्तविक मानचित्र चलाने के लिए, आदि कार्यों को कम)।उदाहरण के लिए यदि आप myDataFrame.map{ ... }
के अंदर किसी अज्ञात फ़ंक्शन के अंदर ब्रेकपॉइंट सेट करते हैं, तो शायद यह हिट नहीं होगा, क्योंकि यह कुछ कार्यकर्ता नोड पर निष्पादित है। हालांकि, उदाहरण के साथ myDataFrame.head
और मूल्यांकन अभिव्यक्ति कार्यक्षमता मैं अपनी अधिकांश डीबगिंग आवश्यकताओं को पूरा करने में सक्षम हूं। ऐसा कहकर, मैंने विशेष रूप से एक्जिक्यूटर्स को जावा विकल्प पास करने की कोशिश नहीं की है, इसलिए शायद यह काम करने के लिए संभव है (लेकिन शायद थकाऊ)।
क्या पीडीबी 'पायथन ** और ** स्पार्क के साथ काम करता है, खासकर' स्पार्क-सबमिट 'के साथ? स्पार्क की वितरित प्रकृति मुझे संदेहजनक बनाती है। वैसे भी मैं सोच रहा हूं कि आप स्काला और स्पार्क-सबमिट के लिए डिबगर खोल पर भाग्य से बाहर हैं। – Paul
मैं पाइथन के साथ स्पार्क का उपयोग नहीं कर रहा हूं। – lollercoaster