美文网首页
spark-常用代码

spark-常用代码

作者: logi | 来源:发表于2020-05-19 17:40 被阅读0次

1. group后在内部sort


 // 删除相邻重复的元素
  val deleteRepeatAndSort = udf(f = (list: mutable.WrappedArray[Row]) => {

    val sortList = list.map { case Row(poiId: String, ts: Long) => (poiId, ts) }.
      sortWith((a, b) => a._2 < b._2).toList

    val deleteRepeat = sortList.sliding(2).collect{case Seq(a,b) if a._1 != b._1 => b}.toList

    val addHead = (sortList.head :: deleteRepeat).
      map(e => e._1).toArray

    addHead
  }
  )

// ...
 val df = spark.sql(sql).na.drop().
      filter($"tag".startsWith("\"keyword\"")).
      groupBy("userid").
      agg(collect_list(struct($"poi_query", $"ts")).alias("item_list")).
      withColumn("session", deleteRepeatAndSort($"item_list"))
  1. rdd join 后的map处理方法
val allDaodianSession: RDD[(String, Seq[OfflineItemWithTs])] = ...
val originFeatures: RDD[(String, String)] = ...

//这里注意由于是leftjoin,leftjoin的字段在map处理中加上了option字段
//同时使用isDefined判断是否匹配到了此字段
val finalRDD = originFeatures.leftOuterJoin(allDaodianSession).map {
        case (userId: String, (data: String, daodianSessionOpt: Option[Seq[OfflineItemWithTs]])) => {
        if (daodianSessionOpt.isDefined) { // 匹配到
           val daodianSession = daodianSessionOpt.get
          ...
        }
...
}

相关文章

  • spark-常用代码

    1. group后在内部sort rdd join 后的map处理方法

  • spark-天池O2O竞赛

    地址转移到 : spark-天池O2O竞赛

  • Hive 入门

    Hive官网 Hive概述 Hive 的底层执行引擎有 :MapReduce,Tez,Spark- Hive on...

  • Spark-

    之前一直用yomail,但是最近觉得youmail这家伙有点丑。然后自带的那个设置又打不开,一气之下改换成spar...

  • 常用代码

    手机号输入框

  • 常用代码

    大幅度达到

  • 常用代码

    UITableView 侧滑返回执行协议方法

  • 常用代码

    记录一些平时项目中用到的代码 ES7相关 Async/Await await可以把asnyc当成一个同步函数处理,...

  • 常用代码

    1.设置渐变色

  • 常用代码

    简单代码汇总 1.jQuery定时器 2.判断是否是手机访问 3.判断是否是微信浏览器 4.低版本IE判断 5.判...

网友评论

      本文标题:spark-常用代码

      本文链接:https://www.haomeiwen.com/subject/wkzbohtx.html