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增量倒入)相关推荐

  1. 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 ...

  2. Sqoop(四)增量导入、全量导入、减量导入

    本文转自:https://www.cnblogs.com/yfb918/p/10858355.html 增量导入 一.说明 当在生产环境中,我们可能会定期从与业务相关的关系型数据库向Hadoop导入数 ...

  3. 【大数据开发运维解决方案】sqoop避免输入密码自动增量job脚本介绍

    上一篇文章介绍了sqoop增量同步数据到hive,同时上一篇文章也给出了本人写的hadoop+hive+hbase+sqoop+kylin的伪分布式安装方法及使用和增量同步实现的连接,上篇文章连接:S ...

  4. sqoop sqoop2_在Sqoop中管理密码的关键提示

    sqoop sqoop2 Sqoop是流行的Hadoop数据传输工具. Sqoop允许从结构化数据存储(如关系数据库,企业数据仓库和NoSQL数据存储)轻松导入和导出数据. Sqoop还与Hive,H ...

  5. sqoop 增量导入mysql_sqoop增量导入数据库

    Sqoop(Tunnel通道系列) Sqoop基于社区Sqoop 1.4.6版本开发,增强了对MaxCompute的支持,可以将数据从MySQL等关系数据库导入或导出到MaxCompute表中,也可以 ...

  6. sqoop增量导出mysql_sqoop定时增量导入导出

    sqoop使用hsql来存储job信息,开启metastor service将job信息共享,所有node上的sqoop都可以运行同一个job 一.sqoop的配置文件在sqoop.site.xml中 ...

  7. Sqoop导出模式——全量、增量insert、更新update的介绍以及脚本示例

    背景信息 SQOOP支持直接从Hive表到RDBMS表的导出操作,也支持HDFS到RDBMS表的操作, 当前需求是从Hive中导出数据到RDBMS,有如下两种方案: Ø  从Hive表到RDBMS表的 ...

  8. 【Sqoop】Sqoop job实现增量导入的原理

    我们在使用Sqoop的增量导入时,需要配置三个参数: 假设有这样的场景: 使用Sqoop每天定时导出emp表的增量数据,其中emp的id列为自增列. 那么此时有两种方式实现: (1) 每天手工配置la ...

  9. Sqoop 数据增量导出,--update-key添加多个字段

    增量导出 Ø 应用场景:将Hive表中的增量记录以及有修改的记录同步到目标表中. Ø 实现逻辑: 增量导出(insert模式) HQL示例:insert overwrite directory '/u ...

最新文章

  1. 我的世界最新版本生存服务器ip,我的世界服务器古风小阁IP|纯净生存(1.15.2)
  2. JavaScript:引用js文件时的编码格式问题
  3. python二维游戏编程 超级大脑_超级大脑教练 - 主页
  4. HTML meta标签总结
  5. icps -lm 命令与 shmmax 的关系
  6. yolact实时分割
  7. xps数据怎么导出为txt_使用ExportAsFixedFormat方法将数据导出到PDF或XPS.docx
  8. 傲游浏览器---自定义 UserAgent 字符串
  9. python 手动读取cifar10_Python搞定Excel,秒解决!大大提高工作效率
  10. 嗯?原来if可以调用方法的?
  11. Sql server时间转时间long
  12. xp系统运行asp.net时候出现“服务器应用程序不可用”,vs2005无法启动调试
  13. 用于WebKit的CSS诀窍-图片版
  14. 百分字符知识付费教程
  15. 35岁没成高管被优化了.... 网友炸了!!!
  16. C语言代码如何运行的
  17. [VC] 【Visual Studio】2005~2015中文完整旗舰版(附序列号)
  18. 提示网站服务器403,浏览器打开网页时出现http 403 禁止访问错误是什么原因?
  19. ElementUI 的 el-select 设置值后显示value而不是label
  20. YOLOv7姿态估计pose estimation(姿态估计+目标检测+跟踪)

热门文章

  1. 【C++】 54_被遗弃的多重继承 (下)
  2. SharePoint REST API - 一个请求批量操作
  3. libtool: line 990: g++: command not found的解决
  4. pycharm (二)
  5. 如何对memcache的数据(key-value)进行遍历操作
  6. linux 如何判断当前用户
  7. shell 日志统计常用脚本
  8. 如何确认访客所在的国家
  9. 线程状态切换之等待队列和同步队列
  10. React 第五章 state 组件生命周期