如何转换此数据框/数据集 spark Scala?

问题描述

输入

+--------------+-----------+
|  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 (将#修改为@)