pyspark - PySpark:如何计算两列中不同值的数量?
问题描述
我有一个包含两列的 DataFrame,id1, id2
我想要得到的是计算这两列的不同值的数量。本质上这是count(set(id1+id2))
.
我怎么能用 PySpark 做到这一点?
谢谢!
请注意,这不是重复的,因为我希望 PySpark 计算count()
. 当然可以获取这两个列表id1_distinct
并将id2_distinct
它们放入 a 中,set()
但在我看来,在处理大数据时这不是正确的解决方案,而且它并不真正符合 PySpark 精神
解决方案
您可以使用 将两列合并为一列union
,并获得countDistinct
:
import pyspark.sql.functions as F
cnt = df.select('id1').union(df.select('id2')).select(F.countDistinct('id1')).head()[0]
推荐阅读
- gradle - 什么命令将使用 maven-publish 成功推送到 s3 存储桶
- sql - SQL - 插入同一张表后
- javascript - jvectormap 仅显示特定区域的标签
- visual-studio-2017 - Azure 应用服务的 Visual Studio 2017 远程调试不工作
- azure-devops - Azure DevOps:如何查找变量组链接到的所有发布计划
- javascript - 使用 jQuery 和 AJAX 正确格式化表格
- sml - 包含所有数字的最小子列表
- php - 将在数据库中搜索的结果链接到另一个页面
- javascript - vue-test-utils:无法覆盖属性 $route,这通常是由于插件将该属性添加为只读值
- angular - 运行应用程序之前的 Angular Universal 错误