Spark:将二表关联

 
package Restart

import com.alibaba.fastjson.{JSON, JSONException}
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object JoinOrderTable {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName(this.getClass.getCanonicalName).setMaster("local[*]")

    val sc = new SparkContext(conf)

    val lines = sc.textFile("C:\\Users\\admin\\Desktop\\FastJion.txt")

    val lineOrderBean: RDD[OrderingBean] = lines.map(it => {
      var ordering: OrderingBean = null
      try {
        ordering = JSON.parseObject(it, classOf[OrderingBean])
      } catch {
        case e: JSONException =>
      }
      ordering
    })
    //记住要过滤脏数据
    val filterOrderBean = lineOrderBean.filter(i => i != null)

    val  cidAndMoney: RDD[(Int,   Double )] = filterOrderBean.map(it => {
      val cid = it.cid
      val money = it.money
      (cid,money)
    })
    val reduceCidAndMoney: RDD[(Int, Double)] = cidAndMoney.reduceByKey(_ + _)



    val line= sc.textFile("C:\\Users\\admin\\Desktop\\commodity.txt")
    val value: RDD[(Int, String)] = line.map(it => {
      val strings = it.split(",")
      val ocid = strings(0).toInt
      val ord = strings(1)
      (ocid, ord)
    })

    val value1: RDD[(Int, (Double, String))] = cidAndMoney.join(value)

    val value2: RDD[(String, Double)] = value1.map(it => {
      ((it._2._2, it._2._1))
    })
    val value3 = value2.reduceByKey(_ + _)


    println(value3.collect().toBuffer)

  }

}
{"cid": 1, "money": 600.0, "longitude":116.397128,"latitude":39.916527,"oid":"o123", }
"oid":"o112", "cid": 3, "money": 200.0, "longitude":118.396128,"latitude":35.916527}
{"oid":"o124", "cid": 2, "money": 200.0, "longitude":117.397128,"latitude":38.916527}
{"oid":"o125", "cid": 3, "money": 100.0, "longitude":118.397128,"latitude":35.916527}
{"oid":"o127", "cid": 1, "money": 100.0, "longitude":116.395128,"latitude":39.916527}
{"oid":"o128", "cid": 2, "money": 200.0, "longitude":117.396128,"latitude":38.916527}
{"oid":"o129", "cid": 3, "money": 300.0, "longitude":115.398128,"latitude":35.916527}
{"oid":"o130", "cid": 2, "money": 100.0, "longitude":116.397128,"latitude":39.916527}
{"oid":"o131", "cid": 1, "money": 100.0, "longitude":117.394128,"latitude":38.916527}
{"oid":"o132", "cid": 3, "money": 200.0, "longitude":118.396128,"latitude":35.916527}


1,"家具"
2,"手机"
3,"服装"

将上面cid和money和下面的家具...二表结合一起

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值