一:意义

1.意义

  如果可以实现这个功能,就可以使用spark代替sqoop,功能程序就实现这个功能。

二:hive操作

1.准备数据

  启动hive

  

  否则报错,因为在hive与spark集成的时候,配置过配置项。

  

  后来,又看见这个文档,感觉很好的解释了我存在的问题:https://blog.csdn.net/freedomboy319/article/details/44828337

2.新建部门员工表

  

 1 -》创建员工表
 2 create table emp(
 3 empno int,
 4 ename string,
 5 job string,
 6 mgr int,
 7 hiredate string,
 8 sal double,
 9 comm double,
10 deptno int
11 )
12 row format delimited fields terminated by '\t';
13 load data local inpath '/opt/datas/emp.txt' into table emp;
14
15
16 -》部门表
17 create table dept(
18 deptno int,
19 dname string,
20 loc string
21 )
22 row format delimited fields terminated by '\t';
23 load data local inpath '/opt/datas/dept.txt' into table dept;

3.效果

  

三:程序

1.大纲

  

2.前提

  需要hive-site.xml

3.需要的依赖

 1         <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-hive -->
 2         <dependency>
 3             <groupId>org.apache.spark</groupId>
 4             <artifactId>spark-hive_2.10</artifactId>
 5             <version>${spark.version}</version>
 6             <scope>provided</scope>
 7         </dependency>
 8
 9         <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
10         <dependency>
11             <groupId>mysql</groupId>
12             <artifactId>mysql-connector-java</artifactId>
13             <version>6.0.4</version>
14         </dependency>

4.报错如下

 1 Exception in thread "main" java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required
 2     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:550)
 3     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:537)
 4     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:527)
 5     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:512)
 6     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:480)
 7     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:498)
 8     at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:494)
 9     at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:72)
10     at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1634)
11     at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:637)
12     at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:351)
13     at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:224)
14     at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$2.apply(JdbcUtils.scala:61)
15     at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$createConnectionFactory$2.apply(JdbcUtils.scala:52)
16     at org.apache.spark.sql.DataFrameWriter.jdbc(DataFrameWriter.scala:278)
17     at com.scala.it.HiveToMysql$.main(HiveToMysql.scala:28)
18     at com.scala.it.HiveToMysql.main(HiveToMysql.scala)
19 Caused by: com.mysql.cj.core.exceptions.UnableToConnectException: CLIENT_PLUGIN_AUTH is required
20     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
21     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
22     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
23     at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
24     at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54)
25     at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
26     at com.mysql.cj.mysqla.io.MysqlaProtocol.rejectConnection(MysqlaProtocol.java:319)
27     at com.mysql.cj.mysqla.authentication.MysqlaAuthenticationProvider.connect(MysqlaAuthenticationProvider.java:207)
28     at com.mysql.cj.mysqla.io.MysqlaProtocol.connect(MysqlaProtocol.java:1361)
29     at com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:132)
30     at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1754)
31     at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1624)
32     ... 8 more

原因:

  mysql-connect版本不匹配,换5.1.17版本。

 

5.程序

 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 }

6.效果

  

  

转载于:https://www.cnblogs.com/juncaoit/p/9382516.html

043 hive数据同步到mysql相关推荐

  1. Table阿里云mysql_数据同步-从MySQL到Tablestore-阿里云开发者社区

    数据同步-从MySQL到Tablestore DataX是阿里集团广泛使用的离线数据导出工具, 本文将详细介绍如何从MySQL导出全量数据到Tablestore(OTS)中. 一.导出步骤 DataX ...

  2. 把hive数据导出至mysql

    ##################环境########################################### 软件 版本 备注 Ubuntu 19.10   sqoop 1.4.7 ...

  3. MySQL用sqoop导出乱码_Sqoop将hive数据导出到MySQL中文乱码了怎么办?

    今天遇到一个问题,如下图所示,我用sqoop将hive中数据导出到mysql中,结果出现了以下情况: 经过查找资料,终于解决了问题,下面我将自己的完整解决步骤做一下记录,如果能帮到需要帮助的人,我会非 ...

  4. Elasticsearch和Hive整合,将hive数据同步到ES中

    1 Elasticsearch整合Hive 1.1 软件环境 Hadoop软件环境 Hive软件环境 ES软件环境 1.2 ES-Hadoop介绍 1.2.1 官网 https://www.elast ...

  5. sqoop export hive数据同步到oracle的用法

    1.export 的参数 2.数据同步案例 sqoop export \--connect jdbc:oracle:thin:@ip:1521/服务名--username 用户名 --password ...

  6. Hive 数据同步ClickHouse

    需求:按条件筛选Hive表中的数据同步到ClickHouse中 方法一: 按照ClickHouse 官方文档提供的方法,在ClickHouse 中创建HDFS引擎表,读取Hive的数据,将读取的数据插 ...

  7. Oracle数据库数据同步到mysql数据库(Oracle数据库备份dmp如何同步到mysql)

    Oracle数据库dmp转mysql格式 一.背景 一项目客户是oracle数据库,需要导一个表数据到自研系统mysql数据库,甲方已给出oracle格式dmp文件! 处理思路: ①.安装Oracle ...

  8. Kafka-connect将Kafka数据同步到Mysql

    一.背景信息 Kafka Connect主要用于将数据流输入和输出消息队列Kafka版.Kafka Connect主要通过各种Source Connector的实现,将数据从第三方系统输入到Kafka ...

  9. 数据同步:MySQL到Elasticsearch

    目录 背景 1.基于应用程序多写 2.基于binlog订阅 2.1:canal 简介 工作原理 2.2.Databus 2.3.Maxwell 2.4.Flink CDC 2.5.DTS(阿里云) 2 ...

最新文章

  1. 如何为网站设置站点图标
  2. android触摸外部关闭键盘,如何隐藏Android上的软键盘,点击外部EditText?
  3. Linux单用户能做什么,Linux单用户模式详解 及应用场景
  4. Linux系统编程:lseek扩展文件大小失败原因分析
  5. 声卡loopback有什么用_声卡购买须知,别买来又退整麻烦事的
  6. 图数据库 Titan 快速入门
  7. 在线象棋游戏php网站源码分享
  8. python判断ip是否可以ping通
  9. python打印朱莉娅集合
  10. 6步讲解应对ESD基本方法
  11. Nacos 中配置 Map 类型,不香
  12. 云班课在计算机,云班课电脑版
  13. 代币系统对会计准则和企业财务革新的启示
  14. java无法连接远程服务器数据库,jar远程连接数据库失败
  15. echarts饼图圆环图数据为0时字体重叠
  16. 百度想象空间还有多少?
  17. 知明:技术 Leader 的思考法
  18. 哪款苹果无线充电宝最好?苹果无线充电宝哪个牌子好
  19. androidpn客户端深析
  20. day35 数据库的初步认识

热门文章

  1. java关联查询实战_MapReduce实战(五)实现关联查询
  2. 【译】ICO 2.0 — The Advent of What Crypto-Fund Raising Should Really Look Like
  3. 一种 Android 应用内全局获取 Context 实例的装置
  4. 一篇不一样的docker原理解析
  5. 实现AIDL接口的Binder连接池
  6. Linux内核中无名管道pipe和有名管道fifo的分析
  7. JZOJ 1240. Fibonacci sequence
  8. python数据科学导论 中南_Python数据科学导论
  9. 破解密码高手王小云教授简介
  10. NOI2020 前最后的日子