Pyspark如何过滤RDD映射函数内的数据框?



我试图在一个map回调函数中查询一个数据框,并创建一个基于多行和多列计算的新列。

DF看起来像这样

tbody> <<tr>
datum start uhrzeit quittierung
2021-01-01XYZ08:00:002021-01-01 09:00:00
2021-01-01XYZ07:05:002021-01-01 09:05:00
2021-01-01XYZ07:05:002021-01-01 09:05:00
2021-01-01XYZ10:00:002021-01-01 10:05:00
2021-01-01XYZ10:00:002021-01-01 11:00:00

看起来你只需要df.groupby("datum", "start").count().show()不会给你你正在寻找的结果?或者你真的需要使用rdd.map吗?

错误的原因是spark试图序列化func1函数,但是在func1内部,您有原始数据帧,这是不可序列化的。

您可以尝试使用group by和Pandas UDF,如下所示:

df = SPARK_DATAFRAME
@pandas_udf(df.schema, functionType=PandasUDFType.GROUPED_MAP)
def func1(pdf):
count = pdf.loc["same filtering but in Pandas"].count()
return (count)

Result= df.groupBy(['datum', 'start']).apply(func1)

这个方向应该有办法

最新更新