【发布时间】:2019-12-26 13:37:46
【问题描述】:
我目前有一个这样的数据框
+------------+----------+----------+
| mac|time |s |
+------------+----------+----------+
|aaaaaaaaaaaa|11 |a |
|aaaaaaaaaaaa|44 |c |
|bbbbbbbbbbbb|22 |b |
|aaaaaaaaaaaa|33 |a |
+------------+----------+----------+
我想使用 .rdd 函数并按“mac”列分组并按“时间”列排序,这是一个示例
res5: Array[(Any, Iterable[(Any, Any)])] = Array((aaaaaaaaaaaa,CompactBuffer((11,a),(33,a),(44,c))), (bbbbbbbbbbbb,CompactBuffer((22,b))))
我已经可以按“mac”列分组,但仍然不能按“时间”排序
df.rdd.map(x=>(x(0),(x(1),x(2)))).groupByKey()
我该怎么做?
【问题讨论】:
-
你需要的输出是什么?也尽量避免 groupByKey databricks.gitbooks.io/databricks-spark-knowledge-base/content/…
-
为什么要把它转换成rdd再做操作呢?相反,您可以通过在数据框上使用窗口函数来实现这一点。有没有具体的输出格式?
标签: scala apache-spark apache-spark-sql rdd