我正在使用spark 2.1.0。以下是我的数据框。问题陈述来自b列,我需要检索b中具有相同值且b中具有不同值的行。提到了结果数据框
a b
1 2
1 3
1 4
2 6
3 7
结果数据框:
a b
1 2
1 3
1 4
我使用了以下代码,但它无效
sqlCtx.sql("select * from df1 group by a,b having count(a)>=2")
请帮我解决问题。
答案 0 :(得分:1)
希望这有帮助!
import pyspark.sql.functions as func
df = sc.parallelize([(1,2), (1,3), (1,4), (2,6), (3,7)]).toDF(["a", "b"])
df.show()
df1 = df.groupBy('a').agg(func.collect_list('b').alias("b_list"),func.count('b').alias("count")).filter(func.col('count') > 1)
df2 = df1.rdd.flatMap(lambda row: [(row.a, b) for b in row.b_list]).toDF(["a", "b"])
df2.show()
(编辑说明:更正错字)
如果它解决了您的问题,请不要告诉我们。)