如何将行数据转置/旋转到 Spark Scala 中的列? [复制]
Posted
技术标签:
【中文标题】如何将行数据转置/旋转到 Spark Scala 中的列? [复制]【英文标题】:How to transpose/pivot the rows data to column in Spark Scala? [duplicate] 【发布时间】:2018-06-08 22:06:24 【问题描述】:我是 Spark-SQL 的新手。我在 Spark Dataframe 中有这样的信息
Company Type Status
A X done
A Y done
A Z done
C X done
C Y done
B Y done
我想显示如下
Company X-type Y-type Z-type
A done done done
B pending done pending
C done done pending
我无法实现这是 Spark-SQL
请帮忙
【问题讨论】:
【参考方案1】:你可以groupby
Company然后在Type列上使用pivot
函数
这是一个简单的例子
import org.apache.spark.sql.functions._
val df = spark.sparkContext.parallelize(Seq(
("A", "X", "done"),
("A", "Y", "done"),
("A", "Z", "done"),
("C", "X", "done"),
("C", "Y", "done"),
("B", "Y", "done")
)).toDF("Company", "Type", "Status")
val result = df.groupBy("Company")
.pivot("Type")
.agg(expr("coalesce(first(Status), \"pending\")"))
result.show()
输出:
+-------+-------+----+-------+
|Company| X| Y| Z|
+-------+-------+----+-------+
| B|pending|done|pending|
| C| done|done|pending|
| A| done|done| done|
+-------+-------+----+-------+
您可以稍后重命名该列。
希望这会有所帮助!
【讨论】:
以上是关于如何将行数据转置/旋转到 Spark Scala 中的列? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
将行值转换为列,其值来自 spark scala 中的另一列 [重复]
基于Spark Scala中的条件转置Dataframe中的特定列和行