1 现象:
通过sqoop将oracle表数据导入hdfs,在oracle的数据为null下,sqoop自动将null变成null字符串存储到hdfs上
这样,在执行hive脚本:
case when a.begindate is not null and a.enddate >= '%current_date%' and instrfun(a.status,'无效')=0 then 'R商标' when a.begindate is not null and instrfun(a.status,'无效')>0 or instrfun(a.status,'注销')>0 then '过期商标' when a.enddate < '%current_date%' then '过期商标' when a.begindate is not null and (instrfun(a.status,'无效')>0 or instrfun(b.xiangmu_new,'无效')>0 or instrfun(b.xiangmu_new,'驳回')>0) then '无效(被否)商标' when a.begindate is null then 'TM商标' else '未知' end MARKTYPE_NEW
的时候, 因为begindate 已经是 'null'字符串了因此上述赋值失效,
处理这种方式如下:
1 sqoop导入数据前针对javabean的字段做预处理比如赋值为 ''
2 或者上述脚本修改为:
case when a.begindate <> 'null' and a.enddate >= '%current_date%' and instrfun(a.status,'无效')=0 then 'R商标' when a.begindate <> 'null' and instrfun(a.status,'无效')>0 or instrfun(a.status,'注销')>0 then '过期商标' when a.enddate < '%current_date%' then '过期商标' when a.begindate <> 'null' and (instrfun(a.status,'无效')>0 or instrfun(b.xiangmu_new,'无效')>0 or instrfun(b.xiangmu_new,'驳回')>0) then '无效(被否)商标' when a.begindate = 'null' then 'TM商标' else '未知' end MARKTYPE_NEW
3 正规要在sqoop导入数据的时候 将oracle的null入hdfs也是null的写法如下:
Sqoop will by default import NULL values as string null. Hive is however using string \N to denote NULL values and therefore predicates dealing with NULL (like IS NULL) will not work correctly. You should append parameters --null-string and --null-non-string in case of import job or --input-null-string and --input-null-non-string in case of an export job if you wish to properly preserve NULL values. Because sqoop is using those parameters in generated code, you need to properly escape value \N to \\N: $ sqoop import ... --null-string '\\N' --null-non-string '\\N'
参考链接:
http://bbs.csdn.net/topics/390459433?page=1
相关推荐
Sqoop导Oracle数据到Hive,代码清晰一目了然
利用sqoop导出oracle的数据时所需的驱动包,只需要将该包放到hive或sqoop的lib目录下即可。
Hadoop-Sqoop-Oracle 使用Sqoop在Oracle数据库和HDFS之间进行导入和导出 内容 使用 操作系统-Ubuntu 20.04.1 LTS(VMware) 后端-Java (JDK 1.8), Sqoop(v1.4.7) , Hadoop(v3.3.0) 库-OJDBC(v7),...
除了代码还有总结内容,代码主要实现了从sqoop1.99.7从oracle导出数据到HDFS某目录;总结内容是一些踩坑的总结,还有一些坑的说明在代码注释里;灵活利用,可以帮助你跑通oracle到hdfs的过程。
mysql数据库商品表、品牌和品牌分类表数据,该数据完全是个人自己创建的数据。
Sqoop连接Oracle必备ojdbc6
sqoop2 java API从oracle导数据到HDFS开发总结 有了这个文档,会为你节省很多时间,一些我踩坑趟路的时间;但是不代表你什么都不知道的前提就能把demo运行起来 。 建议操作顺序:sqoop官方环境搭建文档看一遍,然后...
Sqoop链接oracle、hive和hadoopHDFS的好资料,亲自整理。学习所得。
使用sqoop2从mysql导入hadoop时,导入的数据带单引号。是由于sqoop2的一个bug导致,该包上传到sqoop_home/server/lib替换原来的jar包后,重启sqoop server,即可解决。
jdbc的SqlServer驱动包sqljdbc_2.0.1803.100_chs.exe和sqoop-sqlserver-1.0.tar.gz,使用sqljdbc时双击sqljdbc_2.0.1803.100_chs.exe即可解压得到相应的jar包,全部免积分下载,共同学习
sqoop导入数据到hive
sqoop安装详解以及sqoop内容介绍使用介绍 ...2、导入数据:从结构化数据(Mysql,oracle,db2,)导入到半结构化或非结构化hadoop中(HDFS、HIVE、HBASE) 3、导出数据:从haoop中将数据导出到关系数据库中MySql
运行Sqoop报错:找不到或无法加载主类 org.apache.sqoop.sqoop 将sqoop-1.4.7.jar包放到Sqoop的lib目录下,问题解决。
原生的sqoop在迁移联合主键的表至hive时,只能识别一个主键,导致数据覆盖。本资源是把sqoop的源码按照官方推荐的issue解决方案重新编译后的版本。sqoop-1.4.7.bin__hadoop-2.6.0-2020.0508.tar.gz是已完成编译的tar...
说明: 版本为:sqoop2-1.99.5-cdh5.10.2 解决数据分隔符 以及 string类型数据存在单引号问题(解决方式 通过更改源码SqoopIDFUtils 里面的分隔符来解决此问题 ) 只需要将以下包进行替换 connector-sdk-1.99.5-...
sqoop 从 hive 导到mysql遇到的问题.docx
sqoop 导入数据时候报错ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: oracle.jdbc.OracleDriver 缺少驱动包。
2、sqoop导入(RMDB-mysql、sybase到HDFS-hive) 网址:https://blog.csdn.net/chenwewi520feng/article/details/130572275 介绍sqoop从关系型数据库mysql、sybase同步到hdfs、hive中
sqoop连接sqlserver的驱动工具,没有这个sqoop是连不上滴
Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.Sqoop集群搭建.