如何知道bin / run-example被转换为什么?

时间:2017-10-29 19:46:25

标签: apache-spark

我正在运行bin/run-example ml.ImputerExample。我知道这会转换为spark-submit --name MyApp --class MyMainClass --master local[2] myapplication.jar之类的东西。

但它变得如此令人兴奋?我已经看了bin/run-example,但没有找到答案。 bin/run-example

的内容
if [ -z "${SPARK_HOME}" ]; then
  source "$(dirname "$0")"/find-spark-home
fi

export _SPARK_CMD_USAGE="Usage: ./bin/run-example [options] example-class [example args]"
exec "${SPARK_HOME}"/bin/spark-submit run-example "$@"

3 个答案:

答案 0 :(得分:1)

这是bin/run-example ml.ImputerExample命令转换为:

的命令
${JAVA_HOME}/jre/bin/java -cp ${SPARK_HOME}/conf/:${SPARK_HOME}/jars/* -Xmx1g org.apache.spark.deploy.SparkSubmit --jars ${SPARK_HOME}/examples/jars/scopt_2.11-3.3.0.jar,${SPARK_HOME}/examples/jars/spark-examples_2.11-2.2.0.jar --class org.apache.spark.examples.ml.ImputerExample spark-internal


您可以通过回显exec

中的${SPARK_HOME}/bin/spark-class命令来验证这一点

答案 1 :(得分:1)

使用Spark SPARK_PRINT_LAUNCH_COMMAND 环境变量的隐藏功能,一旦设置为任何内容,就会将整个Spark命令打印到标准输出。

$ SPARK_PRINT_LAUNCH_COMMAND=1 ./bin/run-example hello
Spark Command: /Library/Java/JavaVirtualMachines/Current/Contents/Home/bin/java -cp /Users/jacek/dev/oss/spark/conf/:...
========================================

请参阅最终从Spark的shell脚本执行的org.apache.spark.launcher.Main

答案 2 :(得分:0)

spark-submit生成一个命令来触发Java的执行。看看Spark Code。

解析的一个关键入口点

./发射/ SRC /主/ JAVA /组织/阿帕奇/火花/发射器/ SparkSubmitCommandBuilder.java:70

这里参数run-example用于为Spark中的命令构建器定义一个参数,然后你可以跟进如何在同一个类中解析执行的参数如下。