首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统计SPARKSQL中的重复行数

问统计SPARKSQL中的重复行数
EN

Stack Overflow用户
提问于 2018-02-01 10:53:54
回答 1查看 15.7K关注 0票数 11

我有一个要求,我需要计算配置单元表的SparkSQL中的重复行数。

代码语言:javascript
复制
from pyspark import SparkContext, SparkConf
from pyspark.sql import HiveContext
from pyspark.sql.types import *
from pyspark.sql import Row
app_name="test"
conf = SparkConf().setAppName(app_name)
sc = SparkContext(conf=conf)
sqlContext = HiveContext(sc)
df = sqlContext.sql("select * from  DV_BDFRAWZPH_NOGBD_R000_SG.employee")

到目前为止,我已经硬编码了表名,但它实际上是作为参数出现的。也就是说,我们不知道well.In python pandas的列数或它们的名称,我们有像df.duplicated.sum()这样的东西来计算重复记录的数量。我们这里有这样的东西吗?

代码语言:javascript
复制
+---+---+---+
| 1 | A | B |
+---+---+---+
| 1 | A | B |
+---+---+---+
| 2 | B | E |
+---+---+---+
| 2 | B | E |
+---+---+---+
| 3 | D | G |
+---+---+---+
| 4 | D | G |
+---+---+---+

这里的重复行数是4。(例如)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-01 11:00:46

实际上,您希望对所有列和计数进行groupBy(),然后选择计数大于1的行的计数总和。

代码语言:javascript
复制
import pyspark.sql.functions as f
df.groupBy(df.columns)\
    .count()\
    .where(f.col('count') > 1)\
    .select(f.sum('count'))\
    .show()

说明

分组和聚合后,您的数据将如下所示:

代码语言:javascript
复制
+---+---+---+---+
| 1 | A | B | 2 |
+---+---+---+---+
| 2 | B | E | 2 |
+---+---+---+---+
| 3 | D | G | 1 |
+---+---+---+---+
| 4 | D | G | 1 |
+---+---+---+---+

然后使用where()只过滤计数大于1的行,并选择总和。在本例中,您将获得前2行,总和为4。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48554619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档