Как я могу объединить UDAF с функциями в выражении groupby-агрегата? - PullRequest
1 голос
/ 05 ноября 2019

Я пытаюсь разработать собственное описание. Для этого я скомбинирую функции из pyspark.sql.functions с другими пользовательскими агрегированными функциями (UDAF) . Код выглядит так:

from pyspark.sql.functions import count
from pyspark.sql.functions import pandas_udf, PandasUDFType
from scipy.stats import entropy



# Define a UDAF
@pandas_udf("double", PandasUDFType.GROUPED_AGG)
def my_entropy(data):

    p_data = data.value_counts()           # counts occurrence of each value
    s = entropy(p_data)  # get entropy from counts
    return s


# Perform a groupby-agg 
groupby_col = "a_column"
agg_col = "another_column"
df2return = df\
    .groupBy(groupby_cols)\
    .agg(count(agg_col).alias("count"),
        my_entropy(agg_col).alias("s"))

df2return.show()

Выдается очень длинная ошибка, поэтому я копирую только последнее возникшее исключение.

y

Кто-нибудь знает, как это исправить?

...