在kubernetes spark操作符上部署时,要将spark主地址设置为什么?

cnjp1d6j  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(464)

官方spark文档只提供 spark-submit 将代码部署到spark群集的方法。它提到我们必须在kubernetesapi服务器的地址前面加上前缀 k8s:// . 通过spark操作符部署时应该怎么做?
例如,如果我有一个基本的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 . 我必须也使用 k8s:// 如果通过spark操作符部署,则使用前缀?如果不是,主参数应该使用什么?

50pmv0ei

50pmv0ei1#

最好不要用 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 已弃用。
p、 我建议您阅读《learning spark》的第一章,该书可从databricks网站免费获得。

相关问题