sqoop 使用心得(sqoop增量倒入)
sqoop是干吗的,就不在这里浪费笔墨了,这里主要讲下一个新手接触到sqoop碰到的问题。
一 业务场景 Hive 查询Hql的结果进入MySql,目前本人是通过两步来实现的,
1 把hive查询结果直接进入Hive的表a(a表需要创建,结构需要和b一样)
2 通过sqoop把表a的内容导入到MySql表b(b表已经存在),
这个时候你需要现在hive上创建a表,假如b表字段很多,你需要一个一个字段写到建表语句。我是不想写。估计你也是,都是通过sqoop直接把MySQL的b表导入到hive,因为hive表默认的分隔符是’\001’,所以倒过来的时候要注意,带上表分隔符参数
–fields-terminated-by ‘\t’,如下:
sqoop import –connect jdbc:mysql://db.foo.com/corp –table EMPLOYEES \
–fields-terminated-by ‘\t’
要想通过sqoop把hive的表导入MySql,hive上的表分隔符一定要是’\t’,sqoop才能顺利导入,如果你使用默认的,即使在用sqoop导入的时候通过参数–input-fields-terminated-by ‘\001’也不行的。一定是–input-fields-terminated-by ‘\t’ 才行。
二 sqoop导入hive数据到MySql碰到hive表中列的值为null的情况。
在导入数据的过程中,如果碰到列值为null的情况,hive中为null的是以\N代替的,所以你在导入到MySql时,需要加上两个参数:–input-null-string ‘\\N’ –input-null-non-string ‘\\N’,多加一个’\’,是为转义。如果你通过这个还不能解决字段为null的情况,还是报什么NumberFormalt异常的话,那就是比较另类的了,没有关系,我们还是要办法解决,这就是终极武器。呵呵
你应该注意到每次通过sqoop导入MySql的时,都会生成一个以MySql表命名的.java文件,然后打成JAR包,给sqoop提交给hadoop 的MR来解析Hive表中的数据。那我们可以根据报的错误,找到对应的行,改写该文件,编译,重新打包,sqoop可以通过 -jar-file ,–class-name 组合让我们指定运行自己的jar包中的某个class。来解析该hive表中的每行数据。脚本如下:一个完整的例子如下:
./bin/sqoop export --connect "jdbc:mysql://localhost/aaa?useUnicode=true&characterEncoding=utf-8" --username aaa --password bbb --table table --export-dir /hive/warehouse/table --input-fields-terminated-by '\t' --input-null-string '\\N' --input-null-non-string '\\N' --class-name com.chamago.sqoop.codegen.bi_weekly_sales_item --jar-file /tmp/sqoop-chamago/bi_weekly_sales_item.jar
上面–jar-file 参数指定jar包的路径。–class-name 指定jar包中的class。
这样就可以解决所有解析异常了。
下面贴下sqoop经常用的命令,
1 导入MySQL表到Hive
./sqoop import --connect jdbc:mysql://localhost/aaa?useUnicode=true&characterEncoding=utf-8 --usernameaaa --password bbb --table table2 --hive-import
三 sqoop增量倒入
sqoop支持两种增量MySql导入到hive的模式,
一种是 append,即通过指定一个递增的列,比如:
–incremental append –check-column num_iid –last-value 0
另种是可以根据时间戳,比如:
–incremental lastmodified –check-column created –last-value ‘2012-02-01 11:0:00′
就是只导入created 比’2012-02-01 11:0:00’更大的数据。
sqoop 使用心得(sqoop增量倒入)相关推荐
- sqoop 1.4.5 增量导入hive 0.12.0
1:导入命令 1) bin/sqoop import --connect jdbc:mysql://10.x.x.x:3306/lir --username dss --password xxx123 ...
- Sqoop(四)增量导入、全量导入、减量导入
本文转自:https://www.cnblogs.com/yfb918/p/10858355.html 增量导入 一.说明 当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数 ...
- 【大数据开发运维解决方案】sqoop避免输入密码自动增量job脚本介绍
上一篇文章介绍了sqoop增量同步数据到hive,同时上一篇文章也给出了本人写的hadoop+hive+hbase+sqoop+kylin的伪分布式安装方法及使用和增量同步实现的连接,上篇文章连接:S ...
- sqoop sqoop2_在Sqoop中管理密码的关键提示
sqoop sqoop2 Sqoop是流行的Hadoop数据传输工具. Sqoop允许从结构化数据存储(如关系数据库,企业数据仓库和NoSQL数据存储)轻松导入和导出数据. Sqoop还与Hive,H ...
- sqoop 增量导入mysql_sqoop增量导入数据库
Sqoop(Tunnel通道系列) Sqoop基于社区Sqoop 1.4.6版本开发,增强了对MaxCompute的支持,可以将数据从MySQL等关系数据库导入或导出到MaxCompute表中,也可以 ...
- sqoop增量导出mysql_sqoop定时增量导入导出
sqoop使用hsql来存储job信息,开启metastor service将job信息共享,所有node上的sqoop都可以运行同一个job 一.sqoop的配置文件在sqoop.site.xml中 ...
- Sqoop导出模式——全量、增量insert、更新update的介绍以及脚本示例
背景信息 SQOOP支持直接从Hive表到RDBMS表的导出操作,也支持HDFS到RDBMS表的操作, 当前需求是从Hive中导出数据到RDBMS,有如下两种方案: Ø 从Hive表到RDBMS表的 ...
- 【Sqoop】Sqoop job实现增量导入的原理
我们在使用Sqoop的增量导入时,需要配置三个参数: 假设有这样的场景: 使用Sqoop每天定时导出emp表的增量数据,其中emp的id列为自增列. 那么此时有两种方式实现: (1) 每天手工配置la ...
- Sqoop 数据增量导出,--update-key添加多个字段
增量导出 Ø 应用场景:将Hive表中的增量记录以及有修改的记录同步到目标表中. Ø 实现逻辑: 增量导出(insert模式) HQL示例:insert overwrite directory '/u ...
最新文章
- 我的世界最新版本生存服务器ip,我的世界服务器古风小阁IP|纯净生存(1.15.2)
- JavaScript:引用js文件时的编码格式问题
- python二维游戏编程 超级大脑_超级大脑教练 - 主页
- HTML meta标签总结
- icps -lm 命令与 shmmax 的关系
- yolact实时分割
- xps数据怎么导出为txt_使用ExportAsFixedFormat方法将数据导出到PDF或XPS.docx
- 傲游浏览器---自定义 UserAgent 字符串
- python 手动读取cifar10_Python搞定Excel,秒解决!大大提高工作效率
- 嗯?原来if可以调用方法的?
- Sql server时间转时间long
- xp系统运行asp.net时候出现“服务器应用程序不可用”,vs2005无法启动调试
- 用于WebKit的CSS诀窍-图片版
- 百分字符知识付费教程
- 35岁没成高管被优化了.... 网友炸了!!!
- C语言代码如何运行的
- [VC] 【Visual Studio】2005~2015中文完整旗舰版(附序列号)
- 提示网站服务器403,浏览器打开网页时出现http 403 禁止访问错误是什么原因?
- ElementUI 的 el-select 设置值后显示value而不是label
- YOLOv7姿态估计pose estimation(姿态估计+目标检测+跟踪)