apache-spark - 在Kubernetes Spark Operator上部署时,将Spark Master地址设置为什么?

标签 apache-spark kubernetes pyspark spark-operator

官方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/

相关文章:

java - Spark-提交找不到类(ClassNotFoundException)

kubernetes - 在 Kubernetes 集群中运行 E2E 测试

csv - 如何在IPython Notebook中加载jar依赖项

azure - 使用 PySpark 从 Azure HDInsight 检索数据

scala - 如何获得当前工作中使用的核心数?

python - 如何使用pycharm在远程spark集群中运行应用

amazon-web-services - 关于AWS EC2实例中的Kubernetes集群

azure - 如何注册 microsoft.HDinsight ?在微软 azure 上

scala - 如何在 EMR 上使用 Spark 3 解析 Scala 对象的 "Failed to load class"

Kubernetes-Ingress:如何使用 HTTPS 正确路由到两个服务?