關於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