pyspark: 2.3.2
Создание кадра данных из примеров Spark:
input_path = os.path.join(this_script_dir, "data", "sample_libsvm_data.txt")
training_data = self.spark.read.format("libsvm").load(input_path)
Существует столбец «features», который содержит SparseVector
.Как показано на схеме ниже:
<class 'list'>: [StructField(features,VectorUDT,true)]
Я преобразую его, используя следующее:
spark.udf.register("sparseToArray", lambda x: numpy.array(x.toArray()), ArrayType(elementType=FloatType(), containsNull=False))
sql = "sparseToArray(features) as features"
data = training_data.selectExpr(sql)
После преобразования схема отображается как:
StructField(features,ArrayType(FloatType,false),true)
Вызовdata.collect()
вызывает это:
net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict (for numpy.core.multiarray._reconstruct)
at net.razorvine.pickle.objects.ClassDictConstructor.construct(ClassDictConstructor.java:23)
at net.razorvine.pickle.Unpickler.load_reduce(Unpickler.java:707)
at net.razorvine.pickle.Unpickler.dispatch(Unpickler.java:175)
at net.razorvine.pickle.Unpickler.load(Unpickler.java:99)
at net.razorvine.pickle.Unpickler.loads(Unpickler.java:112)