首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sqoop导入空字符串

问Sqoop导入空字符串
EN

Stack Overflow用户
提问于 2016-10-27 17:01:01
回答 4查看 23.5K关注 0票数 5

当查询单元外部表时,Null值显示为'\N‘。

下面是sqoop导入脚本:

sqoop导入-libjars /usr/lib/sqoop/lib/tdgssconfig.jar,/usr/lib/sqoop/lib/terajdbc4.jar -Dmapred.job.queue.name=xxxxxx \-connection jdbc4.jar-Dmapred.job.queue.name=xxxxxx://xxx.x.xx.xx/ LOGMECH=LDAP =$db,LOGMECH=LDAP-连接管理器org.apache.sqoop.teradata.TeradataConnManager \-用户名$user -密码$pwd -查询“ 从col1、col2、col3中选择$db.xxx 其中\$条件“\-空-字符串'\N‘-空-非字符串'\N’\-字段-结束-由'\t‘-num-映射器6\-拆分-被job_number \-删除-目标-dir\-目标-dir $hdfs_loc

请建议对脚本进行哪些更改,以便在查询外部单元表时将空值显示为空。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-10-27 23:22:29

Sathiyan-以下是我经过多次试验后的发现

  1. 如果在sqoop导入过程中不包含(空字符串)属性,则在HDFS中,null存储为整数列的空白和字符串列的空白。2.如果查询HDFS顶部的HIVE表,我们将看到整数列的空和字符串列的空白。
  2. 如果在sqoop导入过程中包含了(--null-string '\N')属性,那么NULL将存储为整数列和字符串列的'\N'。
  3. 如果查询HDFS顶部的HIVE表,则对于整数列和字符串列(而不是‘\N’),我们将看到为空
票数 7
EN

Stack Overflow用户

发布于 2016-10-27 17:13:29

在sqoop脚本中,您提到了--null-string '\N' --null-non-string '\N,意思是,

代码语言:javascript
复制
--null-string '\N'  = The string to be written for a null value for string columns 

--null-non-string '\N' = The string to be written for a null value for non-string columns
票数 6
EN

Stack Overflow用户

发布于 2019-06-30 11:32:25

如果表中的任何值为空,并且我们想要对该表进行sqoop,那么sqoop将在HDFS中将空值作为字符串null导入。因此,这将导致使用hive在查询中使用Null条件的问题。

例如:-让我们将空值插入mysql表“城市”。

代码语言:javascript
复制
mysql> insert into cities values(6,7,NULL);

默认情况下,Sqoop将以字符串null的形式在HDFS中导入空值。

让sqoop看看会发生什么:-

代码语言:javascript
复制
sqoop import –connect jdbc:mysql://localhost:3306/sqoop –username sqoop -P –table cities –hive-import –hive-overwrite –hive-table vikas.cities -m 1

http://deltafrog.com/how-to-handle-null-value-during-sqoop-import-export/

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40290383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档