写在前面
这种直接提交购物车的方式不涉及任何算法,后续我会逐渐学习引入机器学习的相关算法,从而更好的对结果进行预测。截止 2019-08-07排名77/11111
package src.main.scala.com.csylh.august.tianchi.dataclearer
import org.apache.spark.sql.{SaveMode, SparkSession}
/**
* 注意这个
*/
import org.apache.spark.sql.functions.split
/**
* Description: TODO
*
* @Author: 留歌36
* @Date: 2019-08-01 10:57
*/
object SourceDataETLApp {
def main(args: Array[String]): Unit = {
val localMasterURL = "local[2]"
val clusterMasterRL = ""
// 面向SparkSession编程
val spark = SparkSession.builder()
.master(localMasterURL)
.appName("SourceDataETLApp")
.getOrCreate()
val itemData = "/Users/liuge36/Desktop/fresh_comp_offline/tianchi_fresh_comp_train_item.csv"
val userData = "/Users/liuge36/Desktop/fresh_comp_offline/tianchi_fresh_comp_train_user.csv"
/**
* 共计: 620918
* | item_id|item_geohash|item_category|
* +---------+------------+-------------+
* |100002303| null| 3368|
*
*/
// 读取商品子集(P)
val train_item =spark.read.option("header",true).csv(itemData)
// 查看商品子集数据数量
// println(train_item.count())
// 查看前10条商品子集数据
// train_item.show(10)
/**
*
* 共计: 23 291 027
* +--------+---------+-------------+------------+-------------+-------------+
* | user_id| item_id|behavior_type|user_geohash|item_category| time|
* +--------+---------+-------------+------------+-------------+-------------+
* |10001082|285259775| 1| 97lk14c| 4076|2014-12-08 18|
*/
// 读取用户行为数据
val train_user =spark.read.option("header",true).csv(userData)
// 查看行为数据数量
// println(train_user.count())
// 查看前10条行为数据
// train_user.show(10)
// 查看日期和行为数据
// train_user.select("time","behavior_type").show()
// 筛选出behavior_type==3,即加入购物车数据 659437
val resultData = train_user.filter("behavior_type == 3")
// 隐式转换
import spark.implicits._
// 筛选出12月18号一天的数据 18487 ,并仅仅获取user_id 和item_id 字段
val saveData = resultData.withColumn("_tmp", split(resultData.col("time"), " "))
.select($"_tmp".getItem(0).as("t1"), $"user_id", $"item_id")
.filter("t1 == '2014-12-18' ")
.drop("_tmp", "t1")
// 保存数据
saveData
.coalesce(1)
.write
.option("header", "true")
.mode(SaveMode.Overwrite)
.csv("/Users/liuge36/Desktop/fresh_comp_offline/2")
spark.stop()
}
}