2017-01-14 7 views
7

मैं स्कैला 2.11.8 और स्पार्क 2.1.0 का उपयोग कर रहा हूं। मैं स्कैला के लिए बिल्कुल नया हूँ।स्पार्क लिपि में एक स्कैला दुभाषिया में गिरावट?

वहाँ एक पंक्ति ब्रेकप्वाइंट, अजगर के समान को जोड़ने के लिए एक आसान तरीका है:

import pdb; pdb.set_trace() 

जहां मैं एक स्काला खोल में गिरा दिया जाएगा और मैं निरीक्षण कर सकते हैं क्या में निष्पादन की है कि लाइन पर चल रहा है लिपी? (मैं स्क्रिप्ट का सिर्फ अंत के लिए, बहुत व्यवस्थित हूँ ...)

मैं वर्तमान में तो जैसे मेरी स्क्रिप्ट शुरू कर:

$SPARK_HOME/bin/spark-submit --class "MyClassName" --master local target/scala-2.11/my-class-name_2.11-1.0.jar 

वहाँ यह करने के लिए कोई तरीका है? अत्यधिक डीबगिंग में मदद मिलेगी।

संपादित करें: इस other SO post में समाधान बहुत उपयोगी/आवश्यक नहीं थे बॉयलरप्लेट + काम नहीं किया।

+0

क्या पीडीबी 'पायथन ** और ** स्पार्क के साथ काम करता है, खासकर' स्पार्क-सबमिट 'के साथ? स्पार्क की वितरित प्रकृति मुझे संदेहजनक बनाती है। वैसे भी मैं सोच रहा हूं कि आप स्काला और स्पार्क-सबमिट के लिए डिबगर खोल पर भाग्य से बाहर हैं। – Paul

+0

मैं पाइथन के साथ स्पार्क का उपयोग नहीं कर रहा हूं। – lollercoaster

उत्तर

2

मैं निम्नलिखित दो विकल्पों में से एक की सिफारिश करेंगे:

रिमोट डिबगिंग & IntelliJ विचार के "का मूल्यांकन अभिव्यक्ति"

यहाँ मूल विचार यह है कि आप की तरह अपने अनुप्रयोग डिबग तुम अगर यह सिर्फ एक साधारण था आपके आईडीई के भीतर से कोड का टुकड़ा डीबग किया गया। Run->Evaluate expression फ़ंक्शन आपको प्रोटोटाइप कोड करने की अनुमति देता है और आप डीबगर के सामान्य परिवर्तनीय डिस्प्ले, चरण (ओवर) आदि कार्यक्षमता के अधिक का उपयोग कर सकते हैं।

  1. सेटअप दूरस्थ डीबगिंग के लिए आईडीई, और
  2. आपूर्ति दूरस्थ डीबगिंग के लिए सही जावा विकल्पों के साथ आवेदन: हालांकि, बाद से आप अपने आईडीई के भीतर से आवेदन नहीं चला रहे हैं, तो आप की जरूरत है।

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 और मूल्यांकन अभिव्यक्ति कार्यक्षमता मैं अपनी अधिकांश डीबगिंग आवश्यकताओं को पूरा करने में सक्षम हूं। ऐसा कहकर, मैंने विशेष रूप से एक्जिक्यूटर्स को जावा विकल्प पास करने की कोशिश नहीं की है, इसलिए शायद यह काम करने के लिए संभव है (लेकिन शायद थकाऊ)।

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