示例:如何pivot和unpivot DataFrame

Spark pivot()函数用于将数据从一个DataFrame/Dataset列pivot/旋转到多个列(将行转换为列),而unpivot用于将其转换回来(将列转换为行)。

pivot()是一种聚合,其中一个分组列值转换为具有不同数据的单独列。

首先,创建一个示例DataFrame,代码如下:

val data = Seq(
	("Banana",1000,"美国"), 
	("Carrots",1500,"美国"), 
	("Beans",1600,"美国"),
	("Orange",2000,"美国"),
	("Orange",2000,"美国"),
	("Banana",400,"中国"),
	("Carrots",1200,"中国"),
	("Beans",1500,"中国"),
	("Orange",4000,"中国"),
	("Banana",2000,"加拿大"),
	("Carrots",2000,"加拿大"),
	("Beans",2000,"墨西哥"))

import spark.sqlContext.implicits._

val df = data.toDF("Product","Amount","Country")
df.show()

执行以上代码,输出内容如下:

+-------+------+-------+
|Product|Amount|Country|
+-------+------+-------+
| Banana|  1000|   美国|
|Carrots|  1500|   美国|
|  Beans|  1600|   美国|
| Orange|  2000|   美国|
| Orange|  2000|   ......
          

......

抱歉,只有登录会员才可浏览!会员登录


《Flink原理深入与编程实战》