044 hive与mysql两种数据源之间的join

  这篇文章是基于上一篇文章的续集

一:需求

1.图形表示

  

 

 

二:程序

1.程序、

 1 package com.scala.it
 2 
 3 import java.util.Properties
 4 
 5 import org.apache.spark.sql.SaveMode
 6 import org.apache.spark.sql.hive.HiveContext
 7 import org.apache.spark.{SparkConf, SparkContext}
 8 
 9 object HiveToMysql {
10   def main(args: Array[String]): Unit = {
11     val conf = new SparkConf()
12       .setMaster("local[*]")
13       .setAppName("hive-yo-mysql")
14     val sc = SparkContext.getOrCreate(conf)
15     val sqlContext = new HiveContext(sc)
16     val (url, username, password) = ("jdbc:mysql://linux-hadoop01.ibeifeng.com:3306/hadoop09", "root", "123456")
17     val props = new Properties()
18     props.put("user", username)
19     props.put("password", password)
20 
21     // ==================================
22     // 第一步:同步hive的dept表到mysql中
23     sqlContext
24       .read
25       .table("hadoop09.dept") // database.tablename
26       .write
27       .mode(SaveMode.Overwrite) // 存在覆盖
28       .jdbc(url, "mysql_dept", props)
29 
30     // 第二步:hive表和mysql表进行数据join操作 ==> 采用HQL语句实现
31     // 2.1 将mysql的数据注册成为临时表
32     sqlContext
33       .read
34       .jdbc(url, "mysql_dept", props)
35       .registerTempTable("temp_mysql_dept") // 临时表中不要出现"."
36 
37     // 第三步数据join
38     sqlContext.sql(
39       """
40         |SELECT a.*,b.dname,b.loc
41         |FROM hadoop09.emp a join temp_mysql_dept b on a.deptno = b.deptno
42       """.stripMargin)
43       .write
44       .format("org.apache.spark.sql.execution.datasources.parquet")
45       .mode(SaveMode.Overwrite)
46       .save("/spark/join/parquet")
47 
48     // 检测数据是否join成功
49     sqlContext
50       .read
51       .format("parquet")
52       .load("/spark/join/parquet")
53       .show()
54 
55   }
56 }

 

2.效果

  

 

三:知识点

1.format

  可以写包名。

  

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值