Spark in AKS. Error: Could not find or load main class org.apache.spark.launcher.Main
Spark in AKS. Error: Could not find or load main class org.apache.spark.launcher.Main
更新 1:从 Spark installation - Error: Could not find or load main class org.apache.spark.launcher.Main 添加缺失的部分和 env 变量后,该命令不再抛出错误,而是打印自身并且不执行任何其他操作。这是 运行 命令的新结果:
"C:\Program Files\Java\jdk1.8.0_271\bin\java" -cp "C:\Users\xxx\repos\spark/conf\;C:\Users\xxx\repos\spark\assembly\target\scala-2.12\jars\*" org.apache.spark.deploy.SparkSubmit --master k8s://http://127.0.0.1:8001 --deploy-mode cluster --conf "spark.kubernetes.container.image=xxx.azurecr.io/spark:spark2.4.5_scala2.12.12" --conf "spark.kubernetes.authenticate.driver.serviceAccountName=spark" --conf "spark.executor.instances=3" --class com.xxx.bigdata.xxx.XMain --name xxx_app https://storage.blob.core.windows.net/jars/xxx.jar
我一直在按照本指南在 AKS 中设置 Spark:https://docs.microsoft.com/en-us/azure/aks/spark-job。我将 Spark 标签 2.4.5 与 scala 2.12.12 一起使用。我已完成以下所有步骤:
- 使用 ACR 和 Azure 存储、服务帐户和角色创建了 AKS
- 内置火花源
- 构建 docker 图像并推送到 ACR
- 构建示例 SparkPi jar 并推送到存储
- 代理 api-server (kubectl proxy) 并执行 spark-submit:
./bin/spark-submit \
--master k8s://http://127.0.0.1:8001 \
--deploy-mode cluster \
--name xxx_app\
--class com.xxx.bigdata.xxx.XMain\
--conf spark.executor.instances=3 \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.kubernetes.container.image=xxx.azurecr.io/spark:spark2.4.5_scala2.12.12 \
"https://storage.blob.core.windows.net/jars/xxx.jar"
我得到的只是Error: Could not find or load main class org.apache.spark.launcher.Main
现在,有趣的是我在命令中更改什么根本不重要。我可以弄乱 ACR 地址、spark 图像名称、jar 位置、api-服务器地址,任何东西,我仍然会遇到同样的错误。
我想我一定是犯了一些愚蠢的错误,因为似乎没有什么比现在更能破坏命令了,但我不能真正确定它。
有人知道哪里出了问题吗?
看起来这可能是您正在执行的机器上的问题 spark-submit
。您可能在正在执行的机器上的类路径中丢失了一些 jar spark-submit
。值得一看 Spark installation - Error: Could not find or load main class org.apache.spark.launcher.Main
好吧,所以我成功地使用 spark-submit.cmd 提交了作业。无需任何额外设置即可运行。
我最终没能使 bash 脚本运行,目前我没有时间进一步研究它。所以,很抱歉提供了一个半评估的答案,只部分解决了原来的问题,但它仍然是一个解决方案。
下面的命令工作正常
bin\spark-submit.cmd --master k8s://http://127.0.0.1:8001 --deploy-mode cluster --name spark-pi --class org.apache.spark.examples.SparkPi --conf spark.executor.instances=3 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.kubernetes.namespace=dev --conf spark.kubernetes.container.image=xxx.azurecr.io/spark:spark-2.4.5_scala-2.12_hadoop-2.7.7 https://xxx.blob.core.windows.net/jars/SparkPi-assembly-0.1.0-SNAPSHOT.jar
更新 1:从 Spark installation - Error: Could not find or load main class org.apache.spark.launcher.Main 添加缺失的部分和 env 变量后,该命令不再抛出错误,而是打印自身并且不执行任何其他操作。这是 运行 命令的新结果:
"C:\Program Files\Java\jdk1.8.0_271\bin\java" -cp "C:\Users\xxx\repos\spark/conf\;C:\Users\xxx\repos\spark\assembly\target\scala-2.12\jars\*" org.apache.spark.deploy.SparkSubmit --master k8s://http://127.0.0.1:8001 --deploy-mode cluster --conf "spark.kubernetes.container.image=xxx.azurecr.io/spark:spark2.4.5_scala2.12.12" --conf "spark.kubernetes.authenticate.driver.serviceAccountName=spark" --conf "spark.executor.instances=3" --class com.xxx.bigdata.xxx.XMain --name xxx_app https://storage.blob.core.windows.net/jars/xxx.jar
我一直在按照本指南在 AKS 中设置 Spark:https://docs.microsoft.com/en-us/azure/aks/spark-job。我将 Spark 标签 2.4.5 与 scala 2.12.12 一起使用。我已完成以下所有步骤:
- 使用 ACR 和 Azure 存储、服务帐户和角色创建了 AKS
- 内置火花源
- 构建 docker 图像并推送到 ACR
- 构建示例 SparkPi jar 并推送到存储
- 代理 api-server (kubectl proxy) 并执行 spark-submit:
./bin/spark-submit \
--master k8s://http://127.0.0.1:8001 \
--deploy-mode cluster \
--name xxx_app\
--class com.xxx.bigdata.xxx.XMain\
--conf spark.executor.instances=3 \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.kubernetes.container.image=xxx.azurecr.io/spark:spark2.4.5_scala2.12.12 \
"https://storage.blob.core.windows.net/jars/xxx.jar"
我得到的只是Error: Could not find or load main class org.apache.spark.launcher.Main
现在,有趣的是我在命令中更改什么根本不重要。我可以弄乱 ACR 地址、spark 图像名称、jar 位置、api-服务器地址,任何东西,我仍然会遇到同样的错误。
我想我一定是犯了一些愚蠢的错误,因为似乎没有什么比现在更能破坏命令了,但我不能真正确定它。 有人知道哪里出了问题吗?
看起来这可能是您正在执行的机器上的问题 spark-submit
。您可能在正在执行的机器上的类路径中丢失了一些 jar spark-submit
。值得一看 Spark installation - Error: Could not find or load main class org.apache.spark.launcher.Main
好吧,所以我成功地使用 spark-submit.cmd 提交了作业。无需任何额外设置即可运行。
我最终没能使 bash 脚本运行,目前我没有时间进一步研究它。所以,很抱歉提供了一个半评估的答案,只部分解决了原来的问题,但它仍然是一个解决方案。
下面的命令工作正常
bin\spark-submit.cmd --master k8s://http://127.0.0.1:8001 --deploy-mode cluster --name spark-pi --class org.apache.spark.examples.SparkPi --conf spark.executor.instances=3 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.kubernetes.namespace=dev --conf spark.kubernetes.container.image=xxx.azurecr.io/spark:spark-2.4.5_scala-2.12_hadoop-2.7.7 https://xxx.blob.core.windows.net/jars/SparkPi-assembly-0.1.0-SNAPSHOT.jar