我正在使用 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/