问题描述
输入
+--------------+-----------+
| country name|country code
+--------------+-----------+
| USA| 400001|
| USA| 400001|
| USA| 400001|
| USA| 400002|
| USA| 400002|
|
| Russia| 100001|
| Russia| 100001|
| Russia| 100002|
| Russia| 100002|
| Russia| 100002|
|
| China| 600000|
| China| 600001|
| China| 600001|
| China| 600001|
|
| India| 700001|
| India| 700001|
| India| 700001|
| India| 700001|
| India| 700001|
|
| Australia| 800004|
| Australia| 800004|
| Australia| 800004|
| Australia| 800004|
+--------------+---------
output
USA | Russia| China|India | Australia|
+------+------+------+------+------------+---
|400001|100001|600000| 700006| 80001|
|400001|100001|600000| 700006| 80001|
|400001|100001|600000| 700006| 80001|
|400002|100002|600001| 700004| 80004|
|400002|100002|600000| 700006| 80001|
+------+------+------+------+------------+---
需要连接所有字段/列以使其成为一个吗?如果字段为空,我们甚至可以添加 na 或 null
开始制作动态列
val columns=ds1.groupBy("country name").pivot("country name").count().drop("country name").columns
所以我收到了列 现在循环它们
val b =columns.map(c=>ds1.filter(ds1("country name") === c).withColumn(c,lit(ds1("country code"))).drop("country code").drop("country name")).reduce(_ unionAll _)
最初尝试做单组
ds1.filter(ds1("country name") === c).withColumn(c,lit(ds1("country code"))).drop("country code").drop("country name") ```
每组只出现一列 修改为处理动态列, 如何加入所有这些以接收关于输出? 将上面的数据框/数据集转换为下面的输出?我尝试过 map 和 reduce 但不知何故卡住了,因为它在列标题之一中提供了所有列
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)