zoukankan      html  css  js  c++  java
  • 天池新人实战赛之[离线赛]-初体验-Spark处理

    写在前面

    这种直接提交购物车的方式不涉及任何算法,后续我会逐渐学习引入机器学习的相关算法,从而更好的对结果进行预测。截止 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()
    
    
      }
    
    }
    
  • 相关阅读:
    GridView加ObjectDataSource做删除事件(ObjectDataSourceStatusEventHandler 委托)
    非常酷的三级下拉菜单!!(javascript)
    sql事务处理(转)
    首页头部下拉广告设计(javascript)
    JavaScript 强行弹出窗口 与 无提示关闭页面
    androd之绘制文本(FontMetrics)[转]
    Android 字 成 圆
    python写的二分插入算法
    Loading效果 UIActivityIndicatorView
    ios6.0 调用系统api 分享到 twitter facebook weibo
  • 原文地址:https://www.cnblogs.com/liuge36/p/12614731.html
Copyright © 2011-2022 走看看