spark 实战笔记case1

val tt1 = Array(
("1", ( "t1", "2014-03-01 00:00:00.000+01") ),
("1", ( "t1", "2014-03-01 00:01:00.000+01") ),
("2", ( "t1", "2014-03-02 00:00:00.000+01") ),
("2", ( "t1", "2014-03-03 00:00:00.000+01") ),
("2", ( "t1", "2014-03-04 00:00:00.000+01") ),
("3", ( "t1", "2014-03-03 00:00:00.000+01") )
)

val tt1kv = sc.parallelize(tt1)

def comparePair(one:(String,String), two:(String,String)): (String,String) = {
  if (one._2.compareTo(two._2) > 0) one
  else two
}

tt1kv.reduceByKey(comparePair).collect.foreach(println)

val tt2 = Array(
("1", ( "t2", "2014-03-01 00:02:00.000+01") ),
("2", ( "t2", "2014-03-02 00:02:00.000+01") ),
("2", ( "t2", "2014-03-03 00:02:00.000+01") ),
("2", ( "t2", "2014-03-04 00:02:00.000+01") )
)

val tt2kv = sc.parallelize(tt2)

val un = tt1kv.reduceByKey(comparePair).union(tt2kv.reduceByKey(comparePair))

un.collect.foreach(println)
un.groupByKey.collect.foreach(println)


un.filter(kv => kv._2._1 == "t2").collect.foreach(println)
un.groupByKey.filter(kv => kv._2.toSeq.length < 2).collect.foreach(println)


def haveAllTypes ( events:Seq[(String,String)] ): Boolean = {
  if ( !events.filter(kv => kv._1 == "t1").isEmpty && !events.filter(kv => kv._1 == "t2").isEmpty ) {
    true
  } else {
    false
  }
}
un.groupByKey.filter( kv => haveAllTypes(kv._2.toSeq) ).collect.foreach(println)


def filterSLA ( events:Seq[(String,String)] ): Boolean = {
  val eventMap = events.toMap
  if ( (eventMap contains "t1") && (eventMap contains "t2") ) {
    val format = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSX")
    val ts1 = format.parse(eventMap("t1")).getTime
    val ts2 = format.parse(eventMap("t2")).getTime
    if (ts2 - ts1 < 120000)
      false
    else
      true
  } else {
    true
  }
}
un.groupByKey.filter( kv => filterSLA(kv._2.toSeq) ).collect.foreach(println)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值