将数据帧减少到两列的最频繁组合

时间:2016-11-10 20:58:02

标签: apache-spark pyspark

我有一个json文件,我使用以下代码导入:

spark = SparkSession.builder.master("local").appName('GPS').config(conf=SparkConf()).getOrCreate()
df = spark.read.json("SensorData.json")

结果是一个与此类似的数据框:

+---+---+
|  A|  B|
+---+---+
|  1|  3|
|  2|  1|
|  2|  3|
|  1|  2|
|  3|  1|
|  1|  2|
|  2|  1|
|  1|  3|
|  1|  2|
+---+---+

我的任务是使用PySpark将数据减少到只有两列(A和B)的最常见组合

所以想要的输出就是这个

+---+---+-----+
|  A|  B|count|
+---+---+-----+
|  1|  2|    3|
|  2|  1|    2|
+---+---+-----+

1 个答案:

答案 0 :(得分:1)

您可以使用groupBy和limit的组合来实现这一点:

spark = SparkSession.builder.master("local").appName('GPS').config(conf=SparkConf()).getOrCreate()
df = spark.read.json("SensorData.json")

df.groupBy("A","B")
  .count()
  .sort("count",ascending = False)
  .limit(2)
  .show()
+---+---+-----+
|  A|  B|count|
+---+---+-----+
|  1|  2|    3|
|  2|  1|    2|
+---+---+-----+