【发布时间】:2021-05-15 16:16:25
【问题描述】:
我使用 Spark SQL 创建了一个名为 todays_ids 和 previous_days_ids 的 ID 数组。我希望能够直接使用 Spark SQL 将这些 ID 数组转换为集合,然后计算一列 ID 与另一列 ID 之间的差异。到目前为止,我使用了一个 UDF:
df = spark.sql("""
... query to generate today and previous day's ID array columns
""")
# udf that calculates a size of the difference between two sets
differencer=udf(lambda x,y: len(set(x)-set(y)), IntegerType())
df = df.withColumn('difference', differencer('todays_ids', 'previous_days_ids'))
df.createOrReplaceTempView("differences")
然后,我可以获取 difference 列并计算 ID 每天相对于前一天的变化量的“新鲜度”分数。
有没有一种方法可以通过 Spark SQL 来完成,而不是使用 UDF?我在Spark SQL documentation 中找不到关于使用集合的任何内容。
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql