Spark提交来自windows vs. linux

时间:2018-04-09 08:05:43

标签: apache-spark kubernetes

过去几天我在Spark(2.3.0)上遇到了Kubernetes。

我已经测试了来自linux和windows机器的示例SparkPi,发现linux spark-submit运行正常并给出了正确的结果(扰流板:Pi大约是3.1402157010785055)
在Windows上,spark会因类路径问题(Could not find or load main class org.apache.spark.examples.SparkPi

而失败

我注意到当从linux运行spark-submit时,类路径看起来像这样:
-cp ':/opt/spark/jars/*:/var/spark-data/spark-jars/spark-examples_2.11-2.3.0.jar:/var/spark-data/spark-jars/spark-examples_2.11-2.3.0.jar'

在Windows上,日志显示的版本有点不同:
-cp ':/opt/spark/jars/*:/var/spark-data/spark-jars/spark-examples_2.11-2.3.0.jar;/var/spark-data/spark-jars/spark-examples_2.11-2.3.0.jar'

注意:vs.在我认为是这个问题的原因的类路径中。

如何在没有类路径问题的情况下从Windows机器spark-submit建议?

这是我们的spark-submit命令:

bin/spark-submit \ --master k8s://https://xxx.xxx.xxx.xxx:6443 \ --deploy-mode cluster \ --name spark-pi \ --class org.apache.spark.examples.SparkPi \ --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \ --conf spark.driver.memory=1G \ --conf spark.driver.cores=1 \ --conf spark.executor.instances=5 \ --conf spark.executor.cores=1 \ --conf spark.executor.memory=500m \ --conf spark.kubernetes.container.image=spark:2.3.0 \ http://xxx.xxx.xxx.xxx:9080/spark-examples_2.11-2.3.0.jar

由于

1 个答案:

答案 0 :(得分:0)

作为一种解决方法,您可以覆盖脚本SPARK_MOUNTED_CLASSPATH中的环境变量$SPARK_HOME/kubernetes/dockerfiles/spark/entrypoint.sh,以便用正确的冒号替换错误的分号。

然后,您需要重建docker映像,例如,使用$SPARK_HOME/bin/docker-image-tool.sh。之后,在Windows上执行spark-submit即可。

另请参见Spark问题跟踪器:https://issues.apache.org/jira/browse/SPARK-24599