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



官方 Spark 文档仅包含有关将代码部署到 Spark 群集的spark-submit方法的信息。它提到我们必须在 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 的集群上运行,我会提到带有前缀或yarn的主地址spark://。如果通过 Spark 运算符进行部署,是否还必须使用k8s://前缀? 如果不是,主参数应该使用什么?

最好不要在代码中使用setMaster,而是在通过 spark-submit 运行代码时指定它,如下所示(有关详细信息,请参阅文档):

./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')

到更现代(见文档):

from pyspark.sql import SparkSession
spark = SparkSession 
.builder 
.appName("Python Spark SQL basic example") 
.config("spark.some.config.option", "some-value") 
.getOrCreate()

因为SQLContext已被弃用。

附言我建议阅读Learning Spark的第一章,2ed可以从Databricks网站免费获得。

相关内容

  • 没有找到相关文章

最新更新