赞
踩
新建这样的文件:
cui,18,95
chen,17,90
shen,17,95
使用单字符分割的方式建立一个测试表:
create external table test01
(
name string,
age string,
shen string
)
row format delimited
fields terminated by ','
location '/hivedatatest/student';
select * from test01;
可以看出已经分割出来了:
如果将文件修改成这样:
cui,18,95
chen,17,90
shen,17,95
这个时候单字符分割就不管用了。
使用org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe,定义field.delim=","就可以实现
create external table test02
(
name string,
age string,
shen string
)
row format serde
'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
with serdeproperties ("field.delim"=",,")
location '/hivedatatest/student';
select * from test02;
如果再改变一下:
cui,18,95
chen,17,90
shen,17,95
这样上述方法就无法实现分割,虽然工作中很少遇到这种情况:
create external table test03
(
name string,
age string,
shen string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ("input.regex" = "([^ ,]+),+([^ ,]+),,([^ ,]+)")
location '/hivedatatest/student';
select * from test03;
这样就可以实现
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。