【问题标题】:PySpark dataframe with UDF带有 UDF 的 PySpark 数据框
【发布时间】:2020-11-15 11:35:51
【问题描述】:

我为 PySpark DF 提供了以下代码,通过将以下变量传递给 DF 来进行一些计算和聚合:

number_of_plays = 8
date_from = 2020-01-05
date_to = 2020-03-10

df_1 = df.groupBy('player_1', 'player_2').agg(count("*").alias("no_of_plays")).filter(column('no_of_plays')>number_of_plays).filter(column('game_date').between(date_from, date_to))
df_1.show()

现在我想将它包装到 Spark UDF 中,我可以将 3 个变量 number_of_plays、date_from、date_to 作为参数传递给这个函数 所以函数应该看起来像

def myfn (number_of_plays, date_from, date_to):
   # do the aggregation here and return the result

在我的代码中使用。

任何想法如何使用 Python 3 做到这一点?

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-sql


    【解决方案1】:

    这里不需要 UDF - 一个简单的 Python 函数就可以完成这项工作:

    def myfn(df, number_of_plays, date_from, date_to):
        return (df.groupBy('player_1', 'player_2')
                  .agg(count("*").alias("no_of_plays"))
                  .filter(column('no_of_plays') > number_of_plays)
                  .filter(column('game_date').between(date_from, date_to))
               )
    

    你可以直接调用它,比如myfn(df, 10, ...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多