关于hive导入csv数据的问题


这两天遇到个奇怪的事,以前还没注意到。

hive导入csv的时候,有时因为值是带双引号括住的,所以一般用这个格式建表:

create table test(
index int,
.....
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = "\t",
      "quoteChar"     = "\"",
      'skip.header.line.count'='1'
)  
STORED AS TEXTFILE;

然后发现所有的字段都变成string,改也没反应,能改也报错,也不能直接导入到parquet格式的表,也会报错,用impala查询也报错。

后来用另外一个方法,将表转为parquet格式后,字段类型才正常。

那怎么转为parquet格式呢,如果直接创建parquet格式表,在select 导入。会有异常错误

所以我个人方法是再创建一个textfile表,格式如下:

create table test2(
index int,
.....
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE;

然后在创建parquet表,来转换就正常:

create table test3(
index int,
.....
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS PARQUET  TBLPROPERTIES('parquet.compression'='SNAPPY');

就是说,用了 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 就会字段类型异常。

也无从查起。

如果有大神看到可以给点思路哈

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM