`

sqoop从oracle倒数时为null的问题

 
阅读更多
 

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连接Oracle11.2.0.2.0的驱动包

    在本场景中,"sqoop连接Oracle11.2.0.2.0的驱动包"指的是使用Sqoop从Oracle数据库中提取数据时需要的特定驱动程序。这些驱动包包括ojdbc6_g.jar、ojdbc6.jar和ojdbc5.jar,它们是Oracle JDBC驱动程序的不同版本,...

    Sqoop导Oracle数据到Hive

    ### Sqoop导入Oracle数据到Hive的详细步骤与解析 #### 一、概述 在大数据处理领域中,经常需要将关系型数据库中的数据导入到Hadoop的HDFS中,以便进一步进行数据分析或处理。其中,Sqoop作为一种强大的工具,能够...

    Hadoop-Sqoop-Oracle:使用Sqoop在Oracle数据库和HDFS之间进行导入和导出

    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),...

    sqoop2 java API从oracle导数据到HDFS开发总结

    本文档旨在帮助读者理解如何使用sqoop2的Java API将数据从Oracle数据库迁移至HDFS(Hadoop Distributed File System),同时分享了作者在实践中遇到的一些问题及解决方案。为确保能够顺利地运行示例代码,建议先按照...

    sqoop测试数据

    mysql数据库商品表、品牌和品牌分类表数据,该数据完全是个人自己创建的数据。

    【OJDBC-DT-BigData-SQL】Sqoop连接Oracle必备ojdbc6

    Sqoop连接Oracle必备ojdbc6

    sqoop jdbc驱动包

    sqoop 导入数据时候报错ERROR sqoop.Sqoop: Got exception running Sqoop: java.lang.RuntimeException: Could not load db driver class: oracle.jdbc.OracleDriver 缺少驱动包。

    sqoop2 java API从oracle导数据到HDFS开发总结新

    ### Sqoop2 Java API从Oracle导数据到HDFS开发总结 #### 整体说明与准备工作 本文档旨在帮助读者理解如何使用Sqoop2的Java API将数据从Oracle数据库迁移至Hadoop分布式文件系统(HDFS)。为了顺利完成这一过程,本...

    sqoop 从 hive 导到mysql遇到的问题.docx

    在将数据从 Hive 导入到 MySQL 时,Sqoop 可能会遇到一些问题。例如,在描述文件中,Sqoop 的版本为 1.4.4,Hadoop 的版本为 1.0.0,Hive 的版本为 0.11.0。 Sqoop 在连接 MySQL 时,需要指定 JDBC 连接器的路径,...

    sqoop-javabean-sqoop脚本分隔符失效问题

    当我们遇到"sqoop-javabean-sqoop脚本分隔符失效问题"时,这通常意味着在使用Sqoop将数据库表数据导出到Hadoop HDFS或转化为Java Beans的过程中,预设的字段分隔符没有按照预期工作。 首先,让我们了解Sqoop的工作...

    解决sqoop2导入hdfs单引号问题

    使用sqoop2从mysql导入hadoop时,导入的数据带单引号。是由于sqoop2的一个bug导致,该包上传到sqoop_home/server/lib替换原来的jar包后,重启sqoop server,即可解决。

    sqoop导入数据到hive中,数据不一致

    当使用Sqoop将数据导入Hive时,有时可能会遇到数据不一致的问题,这可能是由于多种原因引起的。本文将深入探讨这个问题,并提供可能的解决方案。 Sqoop是一个用于在关系数据库和Hadoop之间传输数据的工具,它可以...

    sqoop从mysql中导入数据到parquet格式的hive中

    sqoop导入数据到hive

    sqoop-1.4.7.zip

    在这个场景中,我们遇到了一个关于Sqoop运行时的问题,即"找不到或无法加载主类 org.apache.sqoop.sqoop"。这个问题通常是由于Java运行环境配置不正确或者 Sqoop 的依赖库没有被正确地包含在执行环境中所导致的。 ...

    Sqoop集群搭建.

    Sqoop 的主要应用场景是数据转换,包括从结构化数据存储到 Hadoop 集群的数据转换,以及从 Hadoop 集群到结构化数据存储的数据转换。Sqoop 提供了多种数据转换方式,包括批量数据转换和实时数据转换。 Sqoop 的优势...

    Sqoop安装与使用

    Sqoop 工具的发展至今主要演化了二大版本,Sqoop1 和 Sqoop2,我们以 Sqoop1 为案例进行讲解,Sqoop2 商用不太稳定。 Sqoop 工具是一个非常有用的数据迁移工具,可以帮助用户将传统型数据库中的数据迁移到 Hadoop ...

    sqoop安装详解以及sqoop介绍

    sqoop安装详解以及sqoop内容介绍使用介绍 ...2、导入数据:从结构化数据(Mysql,oracle,db2,)导入到半结构化或非结构化hadoop中(HDFS、HIVE、HBASE) 3、导出数据:从haoop中将数据导出到关系数据库中MySql

    Apache的sqoop项目

    Apache Sqoop是一个专门为大数据处理设计的数据迁移工具,它允许用户从传统的关系型数据库管理系统(RDBMS)如MySQL、Oracle等,高效地导入到Hadoop的HDFS(Hadoop Distributed File System)中,或者从HDFS导出数据...

    Hadoop-Sqoop配置

    Sqoop 可以连接各种数据源,如 MySQL、PostgreSQL、Oracle 等,并将数据导入 Hadoop 中。 Sqoop 的主要特点是可以将结构化数据源中的数据导入 Hadoop 中,以便进行大数据处理和分析。Sqoop 使用 JDBC 驱动程序来...

    sqoop-cdh安装包

    1. **依赖库缺失**:如果在运行Sqoop时遇到找不到JDBC驱动的问题,确保已安装相应的数据库驱动。例如,对于MySQL,需要`mysql-connector-java`。 2. **权限问题**:如果出现权限错误,确保你的用户有读写权限到HDFS...

Global site tag (gtag.js) - Google Analytics