datax从mysql导入表数据到hive表,字段值为NULL,问题分析

从mysql导入表数据到hive表,字段值为NULL,有可能由以下原因造成:

1.建表分隔符和导入时的分隔符不一致

# 修改分隔符命令
alter table att_new set serdeproperties('field.delim'='\t');

#或者修改导入命令中的分隔符

2.字段的数据类型不一致

# 修改字段数据类型命令
alter table 表名 change column 字段名 字段名 目标的字段类型

#例子:将表test中的字段a的类型转换为bigint
alter table test change column a a bigint

3.文件类型和压缩格式不对(ORC、TEXTFILE...)

4.字段值包含了分隔符,可以换一个分隔符试试

本次我的问题属于第三种情况:

①查看hive表信息(已由ORC修改为TEXTFILE)

datax从mysql导入表数据到hive表,字段值为NULL,问题分析_第1张图片

修改hive表文件存储类型的命令为:

# 修改为ORC格式
ALTER TABLE att_new SET FILEFORMAT ORC


#修改为Text
ALTER TABLE att_new SET FILEFORMAT TEXTFILE

②修改导入时的文件类型和压缩格式

datax从mysql导入表数据到hive表,字段值为NULL,问题分析_第2张图片

 hive表和导入配置中的文件类型都设置为TEXT,导入的压缩格式选择bzip2,最后正常导入。

你可能感兴趣的:(#,Hive,hive,mysql,hadoop)