Spark:使用行值过滤&withColumn?

时间:2019-11-19 21:14:15

标签: apache-spark pyspark

我需要为我的spark数据框中的每一行创建一个名为sim_count的列,其值是该数据框中与当前条件下基于某些条件匹配的所有其他行的计数。使用row时是否可以访问when的值?

像这样可能吗?我已经使用UDF实现了此逻辑,但是数据帧的rdd映射的序列化非常昂贵,我正在尝试看看是否有更快的替代方法来找到此计数值。

修改

<Row's col_1 val>是指我正在计算其计数的外部范围行,而不是df.where内部的内部范围行。例如,我知道这是不正确的语法,但是我正在寻找类似的东西:

df.withColumn('sim_count', 
                  f.when(
                    f.col("col_1").isNotNull(),
                    (
                        df.where(
                            f.col("price_list").between(f.col("col1"), f.col("col2"))
                        ).count()
                    )
                  ).otherwise(f.lit(None).cast(LongType()))
                  )

0 个答案:

没有答案