加载本地文件到Hive表出现NULL列的解决办法
来源:互联网 发布:usb端口测试软件 编辑:程序博客网 时间:2024/06/05 22:41
举例说明,
现有本地文件,每行两列,内容如下:
0000000026310400 F
0000000029858520 F
0000000042620180 F
0000000044783820 F
0000000045771260 F
创建一个Hive表,使用如下语句:
create table if not exists new_table(id string, lable string);
加载本地文件到new_table,使用如下语句:
load data local inpath '~/new_file' overwrite into table new_table;
查询new_table内容,发现多了一个NULL列:
hive> select id, lable from new_table;
0000000026310400 F NULL
0000000029858520 F NULL
0000000042620180 F NULL
0000000044783820 F NULL
0000000045771260 F NULL
再查询第一个字段:
hive> select id from new_table;
0000000026310400 F
0000000029858520 F
0000000042620180 F
0000000044783820 F
0000000045771260 F
从查询结果中可以看出,本地文件每行的两列被当作一个字段加载到表中,但是表定义了两个字段,另一个字段没有数据,所以全是NULL。
分析原因,因为创建表的语句使用了Hive默认的SerDe存储格式,即序列化存储,默认是以'\001'作为字段分隔符,而本地文件new_file两列之间是以'\t'作为分隔符,所以文件中两列被当作一个字段了。
要去除NULL列,可以修改表new_table的字段分隔符,使用如下语句:
hive> alter table new_table set SERDEPROPERTIES('field.delim'='\t');
再次查询:
hive> select id, lable from new_table;
0000000026310400 F
0000000029858520 F
0000000042620180 F
0000000044783820 F
0000000045771260 F
hive> select id from new_table;
0000000026310400
0000000029858520
0000000042620180
0000000044783820
0000000045771260
表的内容正常了。
为避免出现以上问题,其实应该在定义表的时候就使用正确的字段分隔符,可使用如下语句:
create table if not exists new_table(id string, lable string) row format delimited fields terminated by '\t';
- 加载本地文件到Hive表出现NULL列的解决办法
- 加载本地文件到UIWebView的方法
- hive导出查询文件到本地文件的2种办法
- hive导出查询文件到本地文件的2种办法
- hive导出查询文件到本地文件的2种办法
- hive导出查询文件到本地文件的2种办法
- 使用chrome调试ajax加载本地文件的时候出现Failed to load resource: Origin null is not allowed by Access-Control-Allow
- 加载本地文件到 WebView 中
- git 上传本地文件到git.oschina出现的问题
- hive导出查询结果到本地文件
- hive导出查询结果到本地文件
- hive导出查询结果到本地文件
- hive导出查询结果到本地文件
- hive将本地文件上传到文件系统出错
- hive导出查询结果到本地文件
- hive导入数据出现NULL
- Hive 导入数据出现NULL
- Hive加载数据时遇到NULL数据错误的解决方法
- HDU1710-Binary Tree Traversals
- JS实现无缝滚动
- Problem C - Sums ACM/ICPC Central Europe Regional Contest 2014
- CentOS vsftp虚拟用户
- C++ 转换类型运算符 通过operator关键字进行转换
- 加载本地文件到Hive表出现NULL列的解决办法
- C++第5次上机作业
- Libgdx之Skin 皮肤类
- 简单判断某个数是不是2或3的n次幂
- Docker Swarm的入门使用
- linux技巧
- 百度map开发初步及常见问题
- 区间DP入门题--最大匹配的括号数
- jenkins 集成测试工作流程