官方spark documentation只有关于将代码部署到spark集群的spark-submit方法的信息。它提到我们必须在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://前缀吗?如果不是,主参数应该使用什么?
发布于 2020-09-17 04:02:41
最好不要在代码中使用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 operator,但它应该会自动设置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已被弃用。
附言:我建议你读完“学习火花”的第一章,第二版,也就是freely available from the Databricks site。
https://stackoverflow.com/questions/63926804
复制相似问题