PySpark实现统计L_df存在而A_df中不存在的id数量的方法
PySpark等效实现方案
你可以根据数据量选择以下两种实现方式:
- 小数据量场景(A_df的id数量不多,不会超出driver端内存),逻辑和numpy的
isin写法对齐:
# 提取A_df的去重id列表 a_unique_ids = A_df.select("id").distinct().rdd.flatMap(lambda x: x).collect() # 统计L_df中id不在上述列表的记录总数 missing_data = L_df.filter(~L_df["id"].isin(a_unique_ids)).count()
- 大数据量场景(避免把id全量拉到driver端导致内存溢出),推荐使用分布式的左反连接实现:
# left_anti join 会直接保留L_df中无法和A_df匹配到id的全部记录 missing_data = L_df.join(A_df, on="id", how="left_anti").count()
两种写法的统计结果和你给出的numpy代码完全一致。
内容的提问来源于stack exchange,提问作者Fatemeh
相关产品推荐
相关产品推荐

