Best practice zum erstellen SparkSession-Objekt in Scala zu verwenden, sowohl in unittest und Funken Einreichen

Ich habe versucht, schreiben Sie ein transform-Methode von DataFrame zu DataFrame.
Und außerdem möchte ich es testen, indem scalatest.

Wie Sie wissen, in Spark 2.x mit Scala-API können Sie erstellen SparkSession Objekt wie folgt:

import org.apache.spark.sql.SparkSession

val spark = SparkSession.bulider
     .config("spark.master", "local[2]")
     .getOrCreate()

Dieser code funktioniert gut mit unit-tests.
Aber, wenn ich diesen code ausführen mit der Funke zu übermitteln, die cluster-Optionen hat nicht funktioniert.
Zum Beispiel,

spark-submit --master yarn --deploy-mode client --num-executors 10 ...

schafft keinen Vollstrecker.

Habe ich festgestellt, dass die Funke-Argumente vorbringen werden angewendet, wenn ich Sie entfernen config("master", "local[2]") Teil der oben genannten code.
Aber, ohne die master-Einstellung der unit-test-code hat nicht funktioniert.

Habe ich versucht zu splitten spark (SparkSession) Objekt-generation Teil auf test-und main.
Aber es gibt so viele code-Blöcke braucht, spark, zum Beispiel import spark.implicit,_ und spark.createDataFrame(rdd, schema).

Ist es bewährte Praxis zu schreiben, einen code zu erstellen spark-Objekt beide zu test und zu laufen spark-Einreichen?

  • Warum kannst du nicht verwenden .config("master", "yarn-client") in scala?
  • Da ich ausführen möchten, testen Sie im lokalen Modus (in meinen laptop) und führen Sie den code in verschiedene Umwelt, die angegeben werden können, die durch spark-senden-Optionen.
  • Ich verstehe nicht das Problem, dann. Natürlich müssen Sie schreiben Sie Anweisungen importieren, wieder in Ihre unit-test-code.
InformationsquelleAutor Joo-Won Jung | 2017-07-31
Schreibe einen Kommentar