import pandas as pd
from pymorphy2 import MorphAnalyzer
from pyspark.sql import SparkSession
from pyspark.sql import types as T
from pyspark.sql import functions as F
spark = SparkSession.builder.appName("udf").getOrCreate()
def gender(s):
m = MorphAnalyzer()
return m.parse(s)[0].tag.gender
gen = F.udf(gender, T.StringType())
df = spark.createDataFrame(pd.DataFrame({"name": ["кирилл", "вавила"]}))
df.select(gen("name").alias("gender")).show()
и более или менее ожидаемо получаю следующее сообщение об ошибке:
ERROR Executor: Exception in task 2.0 in stage 29.0 (TID 151)
net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict (for pyspark.cloudpickle.cloudpickle._make_skeleton_class). This happens when an unsupported/unregistered class is being unpickled that requires construction arguments. Fix it by registering a custom IObjectConstructor for this class.
at net.razorvine.pickle.objects.ClassDictConstructor.construct(ClassDictConstructor.java:23)
at net.razorvine.pickle.Unpickler.load_reduce(Unpickler.java:759)
at net.razorvine.pickle.Unpickler.dispatch(Unpickler.java:199)
Какой самый простой способ обойти ошибку (если она есть)?
Я пробую следующий код: [code]import pandas as pd from pymorphy2 import MorphAnalyzer from pyspark.sql import SparkSession from pyspark.sql import types as T from pyspark.sql import functions as F
df.select(gen("name").alias("gender")).show() [/code] и более или менее ожидаемо получаю следующее сообщение об ошибке: [code]ERROR Executor: Exception in task 2.0 in stage 29.0 (TID 151) net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict (for pyspark.cloudpickle.cloudpickle._make_skeleton_class). This happens when an unsupported/unregistered class is being unpickled that requires construction arguments. Fix it by registering a custom IObjectConstructor for this class. at net.razorvine.pickle.objects.ClassDictConstructor.construct(ClassDictConstructor.java:23) at net.razorvine.pickle.Unpickler.load_reduce(Unpickler.java:759) at net.razorvine.pickle.Unpickler.dispatch(Unpickler.java:199) [/code] Какой самый простой способ обойти ошибку (если она есть)?
У меня есть столбец, значение которого:
{ ab : 0.7220268151565864, cd : 0.2681795338834256, ef : 1.0, gh : 1.0, ij : 0.9266362339932378, kl : 0.7002315808130385}
Я использую UDF для преобразования этого результата в конечный результат, который...
Я не могу найти способ преобразовать двоичный файл в строковое представление без использования UDF
есть ли способ использовать встроенные функции Spark, а не UDF?
from pyspark.sql import DataFrame, SparkSession
import pyspark.sql.functions as F...
Я пытаюсь найти способ написать пользовательскую функцию PySpark, которая может поддерживать любые типы входных данных и возвращать тип на основе типов входных данных. Например, скажем, я хотел создать простую функцию фиксации, которая просто...
Я пытаюсь найти способ написать пользовательскую функцию PySpark, которая может поддерживать любые типы входных данных и возвращать тип на основе типов входных данных. Например, скажем, я хотел создать простую функцию фиксации, которая просто...