Sqoop导入Null字符串

Bag*_*thi 5 null hadoop hive teradata sqoop

Null查询配置单元外部表时,值显示为"\ N".

下面是sqoop导入脚本:

sqoop import -libjars /usr/lib/sqoop/lib/tdgssconfig.jar,/usr/lib/sqoop/lib/terajdbc4.jar -Dmapred.job.queue.name = xxxxxx\--connect jdbc:teradata:// xxx .xx.xxx.xx/DATABASE = $ db,LOGMECH = LDAP --connection-manager org.apache.sqoop.teradata.TeradataConnManager\--username $ user --password $ pwd --query"

从$ db.xxx中选择col1,col2,col3

其中\ $ CONDITIONS"\ - null-string'\ N' - null-non-string'\ N'\ --fields-terminated-by'\t'--num-mappers 6\--split-by job_number\--delete-target-dir\--target-dir $ hdfs_loc

请告知应对脚本进行哪些更改,以便在查询外部配置单元表时将空值显示为空.

Bag*_*thi 7

Sathiyan-经过多次试验后,我的发现如下

  1. 如果sqoop导入期间不包括(空字符串)属性,则空值被存储为[ 空白为整数列]和[ 空白在HDFS对于字符串列.2.如果查询HDFS顶部的HIVE表,我们会看到[ NULL表示整数列]和[ 空白表示String列]
  2. 如果(--null-string '\N')在sqoop导入期间包含该属性,则NULL将存储为整数和字符串列的[ '\ N' ].
  3. 如果查询HDFS顶部的HIVE表,我们会看到[ NULL为整数和字符串列而不是'\ N' ]


Sat*_*n S 6

在您提到的 sqoop 脚本中--null-string '\N' --null-non-string '\N,这意味着,

--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
Run Code Online (Sandbox Code Playgroud)