我最近看到一个pull request被合并到Apache / Spark存储库,显然在K8上添加了PySpark的初始Python绑定。我在PR上发布了一条评论,询问如何在Python Jupyter笔记本中使用spark-on-k8s,并被告知在这里问我的问题。
我的问题是:
有没有办法使用PySpark的SparkSession.Builder
创建SparkContexts,并将主设置设为k8s://<...>:<...>
,并让生成的作业在spark-on-k8s
而不是local
上运行?< / p>
E.g:
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('k8s://https://kubernetes:443').getOrCreate()
我在Kubernetes pod中运行了一个交互式Jupyter笔记本,我正在尝试使用PySpark创建一个{8},它运行在spark-on-k8s而不是使用SparkContext
作为local[*]
。
直到现在,我一直在说错误:
错误:Kubernetes目前不支持Python应用程序。
每当我将master
设置为master
时。
似乎PySpark总是以k8s://<...>
模式运行,目前似乎不支持client
- 也许有一些我不知道的解决方法。
提前致谢!
答案 0 :(得分:1)
pyspark客户端模式适用于Spark的最新版本2.4.0
这是我的做法(在Jupyter实验室中):
import os
os.environ['PYSPARK_PYTHON']="/usr/bin/python3.6"
os.environ['PYSPARK_DRIVER_PYTHON']="/usr/bin/python3.6"
from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
sparkConf = SparkConf()
sparkConf.setMaster("k8s://https://localhost:6443")
sparkConf.setAppName("KUBERNETES-IS-AWESOME")
sparkConf.set("spark.kubernetes.container.image", "robot108/spark-py:latest")
sparkConf.set("spark.kubernetes.namespace", "playground")
spark = SparkSession.builder.config(conf=sparkConf).getOrCreate()
sc = spark.sparkContext
注意:我正在使用Docker Desktop在Mac上本地运行kubernetes。