不能腌制pyspark数据帧

时间:2018-04-02 09:55:12

标签: pyspark pickle spark-submit

我想使用spark submit创建一个决策树模型。

from pyspark.mllib.regression import LabeledPoint
from pyspark.mllib.tree import DecisionTree
from pyspark import SparkConf, SparkContext
from numpy import array
from pyspark.sql import SparkSession

spark = SparkSession \
.builder \
.appName("myApp") \
.config("spark.mongodb.input.uri", "mongodb://127.0.0.1/newumc.classification_data") \
.config("spark.mongodb.output.uri", "mongodb://127.0.0.1/newumc.classification_data") \
.getOrCreate()

df = spark.read.format("com.mongodb.spark.sql.DefaultSource").load()

dt = df.rdd.map(createLabeledPoints)

model_dt = DecisionTree.trainClassifier(dt, numClasses=467, categoricalFeaturesInfo={0:2,1:2, 2:2, 3:2, 4:2, 5:2, 6:2, 7:2, 8:2, 9:2, 10:2, 11:2, 12:2, 13:2, 14:2, 15:2, 16:2, 17:2, 18:2, 19:2, 20:2, 21:2, 22:2, 23:2, 24:2, 25:2, 26:2, 27:2, 28:2, 29:2, 30:2, 31:2, 32:2, 33:2, 34:2, 35:2, 36:2, 37:2, 38:2}, impurity='gini', maxDepth=30, maxBins=32)

其中createLabeledPointsreturn对我labeledpoint

的函数

当我在spark-shell中使用pyspark执行此代码时,我没有任何问题 但我想使用spark-submit,当我这样做时它会给我这个错误

pickle.PicklingError: Could not serialize object: TypeError: can't pickle thread.lock objects

我认为问题是因为我在spark-submit中创建了另一个sparkSession (我认为)或因为 pysparksataframe无法腌制!           有谁可以帮助我!

0 个答案:

没有答案