Lir*_*nBo 1 apache-spark kubernetes
正在为基于 K8s 的 Spark 开发 POC(Spark 版本 2.4.4)。
我能够使用 Spark-submit 调用 Spark 作业:
bin/spark-submit --master k8s://https://localhost:8443 --deploy-mode cluster --conf spark.executor.instances=5 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.kubernetes.container.image=liranbo/k8s-test4:latest --class org.apache.spark.examples.SparkPi --name spark-pi local:///opt/spark/examples/jars/spark-examples_2.11-2.4.4.jar 40
Run Code Online (Sandbox Code Playgroud)
尝试使用 SparkSession 构建器以编程方式执行相同的操作。
SparkSession.builder().appName(appName).master("k8s://https://localhost:8443")
Run Code Online (Sandbox Code Playgroud)
我收到以下异常
org.apache.spark.SparkException: Could not parse Master URL: 'k8s://https://localhost:8443'
at org.apache.spark.SparkContext$.org$apache$spark$SparkContext$$createTaskScheduler(SparkContext.scala:2784)
at org.apache.spark.SparkContext.<init>(SparkContext.scala:493)
at org.apache.spark.SparkContext$.getOrCreate(SparkContext.scala:2520)
at org.apache.spark.sql.SparkSession$Builder.$anonfun$getOrCreate$5(SparkSession.scala:935)
at scala.Option.getOrElse(Option.scala:138)
at org.apache.spark.sql.SparkSession$Builder.getOrCreate(SparkSession.scala:926)
at SparkPi.startBySparkSessionBuilder(SparkPi.java:46)
at Runner.main(Runner.java:9)
Run Code Online (Sandbox Code Playgroud)
使用SparkSession时是否可以将master url设置为K8s?如果不是,为什么 Spark-Submit 支持?
顺便说一句:我能够使用SparkLauncher以编程方式启动应用程序,但这不是我想要的解决方案。
我在sparkPy中看到了一个(可能)工作示例。
以防万一有人遇到同样的问题 - 该问题与丢失的罐子有关。添加以下内容:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-kubernetes_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)