数据挖掘中,关于spark rdd常用算子转dataset
这篇的文章的内容很简单,就是总结一下自己在数据挖掘过程中用到的一些算子,然后将原来项目中使用rdd转换为dataset。理论上来说有结构的rdd都可以转为dataframe或者dataset,因为项目里面读取的是seq,原本是用的rdd,所以理论上是可行的,最开始我有尝试转为datafrme,但是有些算子在转换过程中又会转为rdd,所以后来又尝试走dataset。目前来说,项目里用到的算子都能转为dataset,这里了只是做一些总结,用到的算子都是网上能找到的,自己只是实现了相同的效果。如果有更简便更好的方法,欢迎讨论
//创建sparkSession
val spark = SparkSession.builder().master("local[*]")
.appName("dataset")
.getOrCreate()
import spark.implicits._
spark.createDataset(RDD)
1.reduceByKey(_ + _) => .groupBy('_1).agg(sum("_2"))
2.leftjoinwith + map => .joinWith(dsMap2, dsMap("c1") === dsMap2("c1"), "left_outer").map{
case (_1, _2) =>
(_1.c1, _1.c2, _2.c1, _2.c2)
}
3.reduceByKey(x, y) => .groupBy('_1).agg(functions.first("_2").as("_3")).show()