所以我有一个Dataframe,有一个列“category”,它有超过12k个不同的值,为了采样的目的,我想得到一个小样本,其中这个category列只有1000个不同的值。
在我做之前:
small_distinct = df.select("category").distinct().limit(1000).rdd.flatMap(lambda x: x).collect()
df = df.where(col("category").isin(small_distinct))
我知道这是非常低效的,因为我正在做一个独特的category列,然后将它转换到一个普通的python列表中,这样我就可以使用 isin()
过滤器。
有什么“Spark”的方法吗?我想也许可以用摇窗的方法来做这个工作?但我不能解决它
谢谢!
1条答案
按热度按时间ddrv8njm1#
您可以使用左\u半联接来改进代码:
使用left\ u semi是一种很好的方法,可以高效地使用另一个表过滤表,保持相同的模式。