Hive将csv导入表后以parquet格式存储

如题:
其实这样的实例网上一大堆,我只是搬来留待以备不时之需,话不多说开始吧。

场景

我在AWS的S3里面创建了两个文件夹,分别代表着存储csv文件和parquet格式的文件,
首先我需要把csv文件导到hive表中,这里直接创建表建立映射路径即可:

CREATE EXTERNAL TABLE IF NOT EXISTS `lyb`(
  `code` string COMMENT 'import id', 
  `vin` string COMMENT 'import name', 
  `vichel` string COMMENT 'import message')
row format delimited fields terminated by ',' LINES TERMINATED BY '\n' stored as textfile 
LOCATION 's3://volvo-region-emr-test/datainput/data/lyb' 
tblproperties("skip.header.line.count"="1") 
;

测试数据文件是这样的,但我只取三列。
Hive将csv导入表后以parquet格式存储_第1张图片
可以看到字段是以逗号分割的,所以csv导入hive表是stored as textfile,想一步到位的盆友们注意了,你想直接把文件导入表as parquet的是要报错滴。
导入后的结果:
Hive将csv导入表后以parquet格式存储_第2张图片
然后再创建一个想要以parquet格式存储的表:

CREATE EXTERNAL TABLE IF NOT EXISTS  lyb_parquet(
  `code` string COMMENT 'import id', 
  `vin` string COMMENT 'import name', 
  `vichel` string COMMENT 'import message') 
STORED AS PARQUET 
location 's3://volvo-region-emr-test/datainput/data/lyb_parquet/'
;

查看一下表:
Hive将csv导入表后以parquet格式存储_第3张图片
然后将从csv导入数据的那张表的数据插入到parquet表中即可:

insert overwrite table lyb_parquet select * from lyb;

结果如下:
Hive将csv导入表后以parquet格式存储_第4张图片
Hive将csv导入表后以parquet格式存储_第5张图片

你可能感兴趣的:(AWS,Hive,hive)