天池新人実戦試合の[オフライン]-初体験-Spark処理
前に書く
このようなショッピングカートを直接提出する方法はアルゴリズムにかかわらず、その後、機械学習を導入する関連アルゴリズムを徐々に学習し、結果をよりよく予測します.2019-08-07までランキング77/1111
このようなショッピングカートを直接提出する方法はアルゴリズムにかかわらず、その後、機械学習を導入する関連アルゴリズムを徐々に学習し、結果をよりよく予測します.2019-08-07までランキング77/1111
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()
}
}