Pyspark 统计SPARKSQL中重复的行数

Pyspark 统计SPARKSQL中重复的行数,pyspark,apache-spark-sql,spark-dataframe,pyspark-sql,Pyspark,Apache Spark Sql,Spark Dataframe,Pyspark Sql,我需要计算配置单元表的SparkSQL中重复行的数量 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

我需要计算配置单元表的SparkSQL中重复行的数量

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")
到目前为止,我已经硬编码了表名,但它实际上是作为参数提供的。也就是说,我们不知道列的数量或它们的名称。在python中,我们使用类似df.duplicated.sum()的方法来计算重复记录的数量。我们这里有这样的东西吗

+---+---+---+
| 1 | A | B |
+---+---+---+
| 1 | A | B |
+---+---+---+
| 2 | B | E |
+---+---+---+
| 2 | B | E |
+---+---+---+
| 3 | D | G |
+---+---+---+
| 4 | D | G |
+---+---+---+

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

您基本上希望
groupBy()
所有列和
count()
,然后选择计数大于1的行的计数总和

导入pyspark.sql.f函数
df.groupBy(df.columns)\
.count()\
.其中(f.col('count')>1)\
.选择(f.sum('count'))\
.show()
解释

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

+---+---+---+---+
|1 | A | B | 2|
+---+---+---+---+
|2 | B | E | 2|
+---+---+---+---+
|3 | D | G | 1|
+---+---+---+---+
|4 | D | G | 1|
+---+---+---+---+

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

谢谢,现在我想将此结果存储在一个变量中,并在常规python逻辑中处理。我怎样才能做到这一点?当我将其分配给变量时,它将打印为无。但是如果我只是运行上面的代码,我就会得到结果。谢谢,你让我开心。这个解决方案绝对完美,我可以使用collect而不是show()将数据存储到变量中