aşağıdaki iki seçenekten birini öneriyoruz:
Uzaktan hata ayıklama & IntelliJ Fikir burada temel fikir bunu sadece sıradan olsaydı yapacağınız gibi uygulamanızı hata ayıklamak olduğunu
"ifadesini değerlendirmek" IDE'nizden ayıklanan kod parçası. Run->Evaluate expression
işlevi, kodu prototiplemenize olanak tanır ve hata ayıklayıcıların olağan değişken ekranları, adım (over) vb. Işlevlerinin en'unu kullanabilirsiniz.
- Kurulum uzaktan hata ayıklama için IDE ve uzaktan hata ayıklama için doğru Java seçenekleri ile
- Tedarik uygulaması: Ancak, IDE içinde uygulamayı çalıştıran değiliz çünkü, sen gerekir.
1 için, Run->Edit configurations
gidin sağ üst köşesindeki +
düğmesine basın, uzaktan seçin ve Command line arguments for running remote JVM
(official help) altındaki metin alanının içeriğini kopyalamak.
2 için, onlara JVM seçenekleri, örneğin geçmek SPARK_SUBMIT_OPTS
ortam değişkeni kullanabilirsiniz:
Şimdi
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
Eğer debug
düğmesini vurabilir, vb kesme noktaları
Apache Zeppelin
set
Daha fazla komut dosyası stili Scala yazıyorsanız, bunu bir Zeppelin Spark Scala yorumcusunda yazmayı faydalı bulabilirsiniz. Jupyter/IPython dizüstü bilgisayarları/ipython
kabuğundan (i
) pdb
'dan daha fazla olsa da, bu, çalışma zamanında neler olup bittiğini incelemenize izin veriyor. Bu aynı zamanda verilerinizi çizmenize de izin verecek vb. these docs ile başlayacağım.
Caveat I (vb fonksiyonlarını azaltmak gerçek harita çalıştırın) Yukarıdaki sadece hata ayıklama izin veren kod değildir Çalışan düğümlerde, Sürücü düğüm üzerinde çalışan düşünüyorum.Örneğin, myDataFrame.map{ ... }
içinde bir anonim işlev içinde bir kesme noktası belirlerseniz, bu, bazı çalışan düğümlerde yürütüldüğünden, muhtemelen vurulmayacaktır. Bununla birlikte, ör. myDataFrame.head
ve ifade ifade işlevini kullanarak hata ayıklama gereksinimlerimin çoğunu yerine getirebildim. Bunu söyledikten sonra, özellikle Java seçeneklerini yürütücülere aktarmayı denemedim, bu yüzden belki de çalışmak için (ama muhtemelen can sıkıcı) mümkündür.
'pdb' python ** ve ** spark ile çalışıyor, özellikle 'spark-submit' ile mi? Kıvılcımın dağınık doğası beni şüpheci yapıyor. Her neyse, scala ve kıvılcım göndermek için bir hata ayıklayıcı kabukta şanstan yoksun olduğunuzu düşünüyorum. – Paul
Spark with Python kullanmıyorum. – lollercoaster