【发布时间】:2017-08-14 22:07:03
【问题描述】:
我正在 Spark 中阅读以下 json 文件:
{"id" : "123", "category" : "A"}
{"id" : "456", "category" : "B"}
{"id" : "567", "category" : "C"}
{"id" : "678", "category" : "D"}
{"id" : "789", "category" : "E"}
{"id" : "123", "category" : "B"}
{"id" : "123", "category" : "C"}
我想pivot它来生成类别的mxn矩阵。以下是我的代码:
val df = spark.read.json("test.json")
val pivots = df.groupBy("category").pivot("category").count()
pivots.show()
这会生成以下输出:
+--------+----+----+----+----+----+
|category| A| B| C| D| E|
+--------+----+----+----+----+----+
| E|null|null|null|null| 1|
| B|null| 2|null|null|null|
| D|null|null|null| 1|null|
| C|null|null| 2|null|null|
| A| 1|null|null|null|null|
+--------+----+----+----+----+----+
我真正想做的是,以id 为轴,并在此矩阵中显示计数。例如。 id '123' 映射到类别A、B 和C,所以我希望上面的矩阵显示1 的值A-A、A-B 和A-C(反之亦然) ),目前,它只显示A-A 的1 值。
我将代码更改为 group by 'id' 但这会导致第一列中的 id 值而我想要类别。
有什么办法可以做到这一点(也许使用完全不同的方法)?
【问题讨论】:
标签: scala apache-spark dataframe apache-spark-sql pivot