python - 在 PySpark Builder 中设置 PySpark 序列化器

标签 python apache-spark pyspark spark-submit

我正在使用 PySpark 2.1.1 并尝试在使用 Spark Submit 时设置序列化程序。在我的应用程序中,我按如下方式初始化 SparkSession.builder

print("creating spark session")
spark = SparkSession.builder.master("yarn").appName("AppName").\
config("driver-library-path","libPath")).\
config("driver-java-options",driverJavaOptions).\
enableHiveSupport().\
config("deploy-mode","client").\
config("spark.serializer","PickleSerializer").\
config("spark.executor.instances",100).\
config("spark.executor.memory","4g").\
getOrCreate()

我收到以下错误

java.lang.ClassNotFoundException: PickleSerializer

初始化序列化程序的正确方法是什么?我意识到 Pickle 是默认的,但我想知道我是否也使用其他受支持的序列化程序之一。

最佳答案

spark.serializer 用于设置Java序列化器。对于 Python 序列化程序,使用 SparkContext

serializer 参数
from pyspark.serializers import PickleSerializer

conf = SparkConf().set(...)
sc  = SparkContext(conf=conf, serializer=PickleSerializer())

一旦 SparkContext 准备就绪,您就可以使用它显式初始化 SparkSession:

spark = SparkSession(sc)
spark.sparkContext is sc

## True

或隐含地(it will use SparkContext.getOrCreate):

spark = SparkSession.builder.enableHiveSupport().getOrCreate()
spark.sparkContext is sc

## True

关于python - 在 PySpark Builder 中设置 PySpark 序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47701769/

相关文章:

python - SciPy 曲线拟合失败幂律

apache-spark - 在EMR从站上运行命令?

python - Spark安装问题-TypeError : an integer is required (got type bytes) - spark-2. 4.5-bin-hadoop2.7, hadoop 2.7.1, python 3.8.2

PySpark 毫秒的时间戳

python - 将递归函数变成迭代函数

python - wxPython - GC.DrawText 删除背景位图

python - 无法在不同计算机上使用套接字传输文件

apache-spark - 无法从 pyspark 加载管道模型

hadoop - 如何从 spark thrift 服务器使用 hadoop?

python - Pyspark:从日期时间值中提取日期