2017-01-14 13 views
7

Scala 2.11.8 ve Spark 2.1.0 kullanıyorum. Scala için tamamen yeni.Spark komut dosyasında bir Scala tercümanı var mı?

Python benzer bir tek satır kesme noktası eklemek için basit bir yolu var mı: Bir Scala kabuk içine düştü olacak

import pdb; pdb.set_trace() 

ve ben yürütme bu hat en biteni inceleyebilir senaryo? (Ben de senaryonun sadece sonuna razıyım ...) Şu anda şöyle benim komut başladım

:

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

bunu yapmanın bir yolu var mı? Son derece hata ayıklamaya yardımcı olur.

DÜZENLEME: Bu other SO post'daki çözümler çok yardımcı olmadı/gerekli birçok boilerplate + işe yaramadı.

+0

'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

+0

Spark with Python kullanmıyorum. – lollercoaster

cevap

2

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.

  1. Kurulum uzaktan hata ayıklama için IDE ve uzaktan hata ayıklama için doğru Java seçenekleri ile
  2. 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.

İlgili konular