新入坑数据挖掘,从一段spark入门级数据处理代码开始。
涉及语言Scala、Sql,并涉及将DataFrame转换为Rdd,实现的是从hive读取数据,并根据字段进行分组排序的功能,代码如下:
val df_sr = spark.sql(s"""
SELECT
pushConfigId,
updated
FROM default.ods_flow_rye_PushScene_$YTD()
limit 1000
""")
val df = df_sr.rdd.map(r=>(r(0),r(1)))
val groups=df.groupByKey();
val groupsSort=groups.map(tu=>{
val key=tu._1
val values=tu._2
val sortValues=values.toList.sortWith(_.asInstanceOf[Long] > _.asInstanceOf[Long])
(key,sortValues)
})
groupsSort.collect.foreach(value=>{
print(value._1);
value._2.foreach(v=>print("\t"+v));
println()
})
其中spark.sql
使我们可以直接使用sql语句查询数据库数据,并将数据一DataFrame(数据框)形式呈现,如上代码仅仅查询了两个字段,根据 pushConfigId
进行分组,然后对updated排序取top4数据;
其中df_sr.rdd.map(r=>(r(0),r(1)))