过去几天我在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
由于
答案 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