Apache spark 火花:过滤器和;使用行值的withColumn?
我需要为spark数据帧中的每一行创建一个名为Apache spark 火花:过滤器和;使用行值的withColumn?,apache-spark,pyspark,Apache Spark,Pyspark,我需要为spark数据帧中的每一行创建一个名为sim_count的列,该列的值是数据帧中所有其他行的计数,这些行根据当前行的值匹配某些条件。当使用时是否可以访问行值 这样的事情可能吗?我已经使用UDF实现了这个逻辑,但是数据帧的rdd映射的序列化成本非常高,我正在尝试看看是否有更快的方法来找到这个计数值 编辑 可能重复使用expr例如:df.where(f.expr(“col1和col2之间的价目表”)Ah ok将尝试此操作!我想我会在我的数据帧中将expr存储为名为sim_expr的字符串列,
sim_count
的列,该列的值是数据帧中所有其他行的计数,这些行根据当前行的值匹配某些条件。当使用时
是否可以访问行
值
这样的事情可能吗?我已经使用UDF实现了这个逻辑,但是数据帧的rdd映射的序列化成本非常高,我正在尝试看看是否有更快的方法来找到这个计数值
编辑
可能重复使用expr
例如:df.where(f.expr(“col1和col2之间的价目表”)
Ah ok将尝试此操作!我想我会在我的数据帧中将expr
存储为名为sim_expr
的字符串列,然后执行df.where(f.expr(“sim_expr”)
而不是不幸的是,我认为这行不通。你能尝试提供一个小样本数据帧和相应的所需输出吗?
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()))
)