您当前的位置:首页 > 电脑百科 > 数据库 > 百科

使用sqoop在MySQL、hadoop、hive间同步数据

时间:2020-10-21 16:12:14  来源:  作者:

 

MySQL 的数据导入到 HDFS 中

/usr/local/service/sqoop/bin/sqoop-import 
--connect jdbc:mysql://$mysqlIP/test 
--username root 
-P --table sqoop_test 
-m 4 
--target-dir /sqoop 
--fields-terminated-by 't'
  • --connect 用于连接 MySQL 数据库
  • -P是指手动输出密码,可以用--password直接明文跟上密码
  • test是数据库名,-P表示之后需要输入密码
  • --table 为想要导出的表名,--target-dir 为导出到 HDFS 中的路径
  • /sqoop文件夹在执行命令之前并未创建,如果文件夹已经存在会出错。
  • --target-dir后还可以跟cos路径,直接导出到cos中,同样的,如果cos中的目录已经存在也会报错。
  • -m 4是指使用4个map并行来跑,对应的hdfs中会使用4个分区来存储这些数据
  • --split-by id是指通过id字段进行hash分片

将 HDFS 的数据导入到 MySQL 中

/usr/local/service/sqoop/bin/sqoop-export 
--connect jdbc:mysql://$mysqlIP/test 
--username root 
-P --table sqoop_test 
-m 4 
--export-dir /sqoop 
--input-fields-terminated-by 't'
  • 同上,--export-dir也支持跟cos路径。
  • --table对应的表必须存在。

增量 DB 数据到 HDFS

注意:增量模式入到hdfs中无法自动适配分区,会造成分区数据倾斜。应该尽量进行全量重新入库。

Append

/usr/local/service/sqoop/bin/sqoop-export 
--connect jdbc:mysql://$mysqlIP/test 
--username root 
-P --table sqoop_test 
--check-column id  --incremental append --last-value 3 
--export-dir /sqoop 
--input-fields-terminated-by 't'

lastmodified

/usr/local/service/sqoop/bin/sqoop-export 
--connect jdbc:mysql://$mysqlIP/test 
--username root 
-P --table sqoop_test 
--check-column time  --incremental lastmodified --merge-key id --last-value '2020-10-21 16:02:29' 
--export-dir /sqoop 
--input-fields-terminated-by 't'

将关系型数据库导入到 Hive 中

使用hive-import

/usr/local/service/sqoop/bin/sqoop-import 
--connect  jdbc:mysql://$mysqlIP/test --username 
root -P --table sqoop_test 
--hive-import --hive-database db_sqoop_test --hive-table sqoop_test

使用hcatalog(推荐使用此方式)

如果hive存储格式不是text,就必须用这种方式

/usr/local/service/sqoop/bin/sqoop-import 
--connect  jdbc:mysql://$mysqlIP/test --username 
root -P --table sqoop_test 
--hcatalog-database test_dlm --hcatalog-table table_name 
--hive-partition-key dt --hive-partition-value 201905

如果hive表有分区,就必须带上--hive-partition-key和--hive-partition-value参数

将 Hive 导出到关系型数据库中

MySQL 中的表字段名字和 Hive 中的表字段名字必须完全一致

使用 HDFS 中的 Hive 数据

使用hdfs文件的方式,需要保证分隔符能正确分割内容,否则会报错

/usr/local/service/sqoop/bin/sqoop-export 
--connect jdbc:mysql://$mysqlIP/test  --username root -P 
--table table_from_hive 
--export-dir /usr/hive/warehouse/hive_to_sqoop.db/hive_test

使用 Hcatalog 进行导出(推荐使用此方式)

/usr/local/service/sqoop/bin/sqoop-export 
--connect jdbc:mysql://$mysqlIP/test  --username root -P 
--table table_from_hive 
--hcatalog-database hive_to_sqoop --hcatalog-table hive_test
--hive-partition-key dt --hive-partition-value 201905

常见异常报错处理

如果失败,可以到yarn manager resource上去看错误日志

格式不对

Error: JAVA.io.IOException: Can't export data, please check failed map task logs at org.Apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:122) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:39) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146) at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1844) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:169) Caused by: java.lang.RuntimeException: Can't parse input data: '50.00' at bill_detail_song_201905_sqoop_cos.__loadFromFields(bill_detail_song_201905_sqoop_cos.java:2925) at bill_detail_song_201905_sqoop_cos.parse(bill_detail_song_201905_sqoop_cos.java:2410) at org.apache.sqoop.mapreduce.TextExportMapper.map(TextExportMapper.java:89) ... 10 more Caused by: java.lang.NumberFormatException: For input string: "50.00" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Long.parseLong(Long.java:589) at java.lang.Long.valueOf(Long.java:803) at bill_detail_song_201905_sqoop_cos.__loadFromFields(bill_detail_song_201905_sqoop_cos.java:2616) ... 12 more

检查后发现是bizkey字段含有,跟分隔符冲突,重新导入时指定分隔符即可。建议一般分隔符使用|,复杂的使用||,避免使用,;空格、制表符等常见分隔符。



Tags:sqoop   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
将 MySQL 的数据导入到 HDFS 中/usr/local/service/sqoop/bin/sqoop-import \--connect jdbc:mysql://$mysqlIP/test \--username root \-P --table sqoop_test \-m 4 \--...【详细内容】
2020-10-21  Tags: sqoop  点击:(162)  评论:(0)  加入收藏
Sqoop(SQL to Hadoop)是一个用来将 Hadoop 和关系型数据库中的数据相互转移的工具 ,可以将一个关系型数据库(例如 : MySQL、 Oracle 、 PostgreSQL 等)中的数据导入到 Hadoop 的 H...【详细内容】
2020-09-21  Tags: sqoop  点击:(120)  评论:(0)  加入收藏
▌简易百科推荐
1增1.1【插入单行】insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values (&#39;开心朋朋&#39;,&#39;男&#39;,&#39;1980/6/15&#3...【详细内容】
2021-12-27  快乐火车9d3    Tags:SQL   点击:(1)  评论:(0)  加入收藏
最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫, 不知道各种写法孰优孰劣,该选用哪种写法,以及各种写法的优缺点,本文以一个简单的查询...【详细内容】
2021-12-23  linux上的码农    Tags:sql   点击:(9)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的HasorDB 是一个全功能数据库访问工具,提供对象映射、丰...【详细内容】
2021-12-22  GitHub精选    Tags:HasorDB   点击:(5)  评论:(0)  加入收藏
作者丨Rafal Grzegorczyk译者丨陈骏策划丨孙淑娟【51CTO.com原创稿件】您是否还在手动对数据库执行各种脚本?您是否还在浪费时间去验证数据库脚本的正确性?您是否还需要将...【详细内容】
2021-12-22    51CTO  Tags:Liquibase   点击:(3)  评论:(0)  加入收藏
场景描述:由于生产环境的表比较复杂,字段很多。这里我们做下简化,只为说明今天要聊的问题。有两张表 tab1,tab2: tab1 数据如下: tab2 数据如下: 然后给你看下,我用来统计 name=&#3...【详细内容】
2021-12-20  Bald    Tags:SQL   点击:(5)  评论:(0)  加入收藏
前言知识无底,学海无涯,知识点虽然简单,但是比较多,所以将MySQL的基础写出来,方便自己以后查找,还有就是分享给大家。一、SQL简述1.SQL的概述Structure Query Language(结构化查...【详细内容】
2021-12-16  谣言止于独立思考    Tags:SQL基础   点击:(13)  评论:(0)  加入收藏
前言作为一名测试工程师,工作中在对测试结果进行数据比对的时候,或多或少要和数据库打交道的,要和数据库打交道,那么一些常用的 SQL 查询语法必须要掌握。最近有部分做测试小伙...【详细内容】
2021-12-14  柠檬班软件测试    Tags:SQL   点击:(15)  评论:(0)  加入收藏
话说C是面向内存的编程语言。数据要能存得进去,取得出来,且要考虑效率。不管是顺序存储还是链式存储,其寻址方式总是很重要。顺序存储是连续存储。同质结构的数组通过其索引表...【详细内容】
2021-12-08  小智雅汇    Tags:数据存储   点击:(17)  评论:(0)  加入收藏
概述DBConvert Studio 是一款强大的跨数据库迁移和同步软件,可在不同数据库格式之间转换数据库结构和数据。它将成熟、稳定、久经考验的 DBConvert 和 DBSync 核心与改进的现...【详细内容】
2021-11-17  雪竹聊运维    Tags:数据库   点击:(26)  评论:(0)  加入收藏
一、前言 大家好,我是小诚,《从0到1-全面深刻理解MySQL系列》已经来到第四章,这一章节的主要从一条SQL执行的开始,由浅入深的解析SQL语句由客户端到服务器的完整执行流程,最...【详细内容】
2021-11-09  woaker    Tags:SQL   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条