官方spark documentation仅具有有关spark-submit
方法的信息,该方法用于将代码部署到Spark集群。它提到我们必须在kubernetes api服务器的地址前面加上k8s://
。通过Spark Operator部署时应该怎么做?
例如,如果我有一个像这样启动的基本pyspark应用程序,该如何设置主服务器:
from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
from pyspark import SparkConf, SparkContext
sc = SparkContext("local", "Big data App")
spark = SQLContext(sc)
spark_conf = SparkConf().setMaster('local').setAppName('app_name')
这里我有local
,如果我在非k8的集群上运行,我会提到带有spark://
前缀或yarn
的主地址。如果通过Spark Operator进行部署,是否还必须使用k8s://
前缀?如果不是,应该使用什么作为主参数?
最佳答案
最好不要在代码中使用setMaster
,而应在通过spark-submit运行代码时指定它(例如documentation for details):
./bin/spark-submit \
--master k8s://https://<k8s-apiserver-host>:<k8s-apiserver-port> \
--deploy-mode cluster \
your_script.py
我没有使用Spark运算符,但是据文档了解,它应该自动设置master。您还需要获取以下代码的转换:
sc = SparkContext("local", "Big data App")
spark = SQLContext(sc)
spark_conf = SparkConf().setMaster('local').setAppName('app_name')
到更现代(请参阅doc):from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()
不推荐使用SQLContext
。附言我建议阅读学习Spark第2章的第一章,即freely available from the Databricks site。
关于apache-spark - 在Kubernetes Spark Operator上部署时,将Spark Master地址设置为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63926804/