博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
043 hive数据同步到mysql
阅读量:5278 次
发布时间:2019-06-14

本文共 5031 字,大约阅读时间需要 16 分钟。

一:意义

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 int11 )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 string21 )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         
2
3
org.apache.spark
4
spark-hive_2.10
5
${spark.version}
6
provided
7
8 9
10
11
mysql
12
mysql-connector-java
13
6.0.4
14

 

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.
(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 required20 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     sqlContext24       .read25       .table("hadoop09.dept") // database.tablename26       .write27       .mode(SaveMode.Overwrite) // 存在覆盖28       .jdbc(url, "mysql_dept", props)29   }30 }

 

6.效果

  

 

 

 

 

  

 

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

你可能感兴趣的文章
python接口自动化28-requests-html爬虫框架
查看>>
生成随机数的模板
查看>>
Mysql 数据库操作
查看>>
转:linux终端常用快捷键
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
hdu 3938 并查集
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
软件开发与模型
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 客户端多网络支持
查看>>
HDU 4122
查看>>