今天发现使用sqoop导入db的时候JOB失败,有异常数据导致的,但是如何根据日志中的异常堆栈信息定位到异常数据呢?
每次通过sqoop导入MySql的时,都会生成一个以MySql表命名的.java文件,然后打成JAR包,给sqoop提交给hadoop 的MR来解析Hive表中的数据。那我们可以根据报的错误,找到对应的行,改写该文件,编译,重新打包,sqoop可以通过 -jar-file ,--class-name 组合让我们指定运行自己的jar包中的某个class。来解析该hive表中的每行数据。脚本如下:一个完整的例子如下:
./bin/sqoop export --connect "jdbc:mysql://cmg3.chamago.com/ehub?useUnicode=true&characterEncoding=utf-8"
--username gavin.peng --password gavin.peng --table bi_weekly_sales_item
--export-dir /hive/warehouse/hive_bi_weekly_sales_item --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。
这样就可以解决所有解析异常了。
转自http://f.dataguru.cn/thread-171348-1-1.html
一 业务场景 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://cmg3.chamago.com/ehub?useUnicode=true&characterEncoding=utf-8"
--username gavin.peng --password gavin.peng --table bi_weekly_sales_item
--export-dir /hive/warehouse/hive_bi_weekly_sales_item --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://cmg3.chamago.com/ehub?useUnicode=true&characterEncoding=utf-8 --username gavin.peng --password gavin.peng --table bi_daily_traffic --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实际问题得处理过程,然后延申到完整得hadoop日志得处理过程。非常具体实用。
常用的sqoop操作方法,主要是import与export的常用参数
sqoop使用参考是自己在学习和开发中用到的进行总结和汇总,方便大家做为参考.同时文内容不断的在更新中
sqoop2安装文档,这个很全面,每一步都有,希望对你有所帮助
除了代码还有总结内容,代码主要实现了从sqoop1.99.7从oracle导出数据到HDFS某目录;总结内容是一些踩坑的总结,还有一些坑的说明在代码注释里;灵活利用,可以帮助你跑通oracle到hdfs的过程。
很好用,sqoop2,希望能帮助到你,Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具
sqoop2 java API从oracle导数据到HDFS开发总结 有了这个文档,会为你节省很多时间,一些我踩坑趟路的时间;但是不代表你什么都不知道的前提就能把demo运行起来 。 建议操作顺序:sqoop官方环境搭建文档看一遍,然后...
大数据系列2020-数据迁移工具资料汇总(sqoop、kettle、datax).zip
hadoop sqoop hive kafka
1 Flume、Kafka、Sqoop入门 1.1 Flume入门 1.1.1 Flume概述 Flume概述 Flume是一个分布式的收集、汇总和移动大量的日志数据的可靠的服务。 有Cloudera公司开源 分布式、可靠、高可用的海量日志采集系统 数据源可定制...
JVM_启动参数_总结。详细介绍JVM的详细启动参数及JVM垃圾回收机制。
十道海量数据处理面试题与十个方法大总结
然后从商业产品和Hadoop生态系统两个方面来探讨如何面对大数据,重点分析了Hadoop生态系统是如何解决的:分别用HDFS、HBase和OpenTSDB解决存储问题,用Hadoop MapReduce(Hive)和HadoopDB解决分析问题,用Sqoop和Ganglia...
自己总结的Hadoop全分布模式环境搭建。
Hadoop flink hbase hive kafka linux spark sqoop zookeeper 各种大数据工具的面试经验 题目 大厂面试分享 八股总结 知识点全面
大数据整个生态所有的组件总结,包括:Hadoop,Hive,Hbase,Sqoop,Flume,Kafka,Redis,Storm,Scala,Spark
一、Sqoop教程 1、概述 2、工作机制 3、安装 1)、前提概述 2)、软件下载 3)、安装步骤 4、Sqoop的基本命令 1)、基本操作 2)、Sqoop的数据导入import 3)、关于空值的处理 4)、模板命令手册(下...
redis ,hadoop 安装配置,hive 使用,flume 的安装使用,sqoop
整整两年大数据学习各类优秀网站资料收集,包括hadoop、hdfs、yarn、hive、hbase、flume、kafka、flink\spark、sqoop、mysql、ELK等各类大数据组件及遇到的运维问题总结。
集群运维搭建,搭建hdfs,hadoop,hbase,spark,oozie,sqoop,MR,zookeeper,hive