【问题标题】:What to set Spark Master address to when deploying on Kubernetes Spark Operator?在 Kubernetes Spark Operator 上部署时,Spark Master 地址设置为什么?
【发布时间】:2020-09-16 19:29:15
【问题描述】:

官方spark documentation只有spark-submit将代码部署到spark集群的方法的信息。它提到我们必须在 kubernetes api 服务器的地址前面加上 k8s://。通过Spark Operator部署时应该怎么做?

例如,如果我有一个像这样启动的基本 pyspark 应用程序,我该如何设置 master:

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:// 前缀? 如果不是,主参数应该使用什么?

【问题讨论】:

    标签: apache-spark kubernetes pyspark spark-operator


    【解决方案1】:

    最好不要在代码中使用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 已弃用。

    附:我建议通读 Learning Spark 的第一章,2ed 即freely available from the Databricks site

    【讨论】:

      猜你喜欢
      • 2020-12-29
      • 2017-03-10
      • 1970-01-01
      • 2015-08-09
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2020-09-22
      相关资源
      最近更新 更多