如何将这个Dataframe/数据集转换成scala?

8qgya5xd  于 2021-07-13  发布在  Spark
关注(0)|答案(0)|浏览(282)

输入

+--------------+-----------+
|  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") ```

这样每个组只登陆一列,通过修改来处理动态列,如何连接所有列以接收about输出?将上面的Dataframe/数据集转换为下面的输出?我曾经尝试过map和reduce,但由于它给出了其中一个列标题中的所有列,所以不知怎的卡住了

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题