Scala 使用pivot旋转单行Spark数据帧

Scala 使用pivot旋转单行Spark数据帧,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我是spark的新手,我希望使用scala将数据帧的一行作为轴,如下所示: +--------------+-------+-------+-------+-------+-------+-------+-------+ | Country| 3/7/20| 3/8/20| 3/9/20|3/10/20|3/11/20|3/12/20|3/13/20| +--------------+-------+-------+-------+-------+-------+-------+--

我是spark的新手,我希望使用scala将数据帧的一行作为轴,如下所示:

+--------------+-------+-------+-------+-------+-------+-------+-------+
|       Country| 3/7/20| 3/8/20| 3/9/20|3/10/20|3/11/20|3/12/20|3/13/20|
+--------------+-------+-------+-------+-------+-------+-------+-------+
|         Japan|      0|      4|     10|     18|     27|     31|     35|
+--------------+-------+-------+-------+-------+-------+-------+-------+
我的数据透视框应该如下所示

+--------------+-------+
|       Country| Japan |
+--------------+-------+
|        3/7/20|      0|
+--------------+-------+ 
|        3/8/20|      4|
+--------------+-------+
|        3/9/20|     10|
+--------------+-------+
|       3/10/20|     18|
+--------------+-------+
|           ...|    ...|
+--------------+-------+
我已尝试使用以下方法,但我不确定是否正确获得聚合表达式:

val pivoted = df.groupBy("Country").pivot("Country", Seq("Japan")).agg(col("Country"))
试试这个-

使用
堆栈

df2.show(false)
df2.printSchema()
/**
* +-------+------+------+------+-------+-------+-------+-------+
*|国家| 3/7/20 | 3/8/20 | 3/9/20 | 3/10/20 | 3/11/20 | 3/12/20 | 3/13/20|
* +-------+------+------+------+-------+-------+-------+-------+
*|日本| 0 | 4 | 10 | 18 | 27 | 31 | 35|
* +-------+------+------+------+-------+-------+-------+-------+
*
*根
*|--Country:string(nullable=true)
*|--3/7/20:整数(可为空=真)
*|--3/8/20:整数(可为空=真)
*|--3/9/20:整数(可为空=真)
*|--3/10/20:整数(可为空=真)
*|--3/11/20:整数(可为空=真)
*|--3/12/20:整数(可为空=真)
*|--3/13/20:整数(可为空=真)
*/
val stringCol=df2.columns.map(c=>s“'$c',cast(`c`as string)”).mkString(“,”)
val processedDF=df2.selectExpr(s“stack(${df2.columns.length},$stringCol)as(col_1,col_2)”)
processedDF.show(false)
/**
* +-------+-----+
*|第1列|第2列|
* +-------+-----+
*|国家|日本|
* |3/7/20 |0    |
* |3/8/20 |4    |
* |3/9/20 |10   |
* |3/10/20|18   |
* |3/11/20|27   |
* |3/12/20|31   |
* |3/13/20|35   |
* +-------+-----+
*/