Parquet_2. 在 Impala/Hive 中使用 Parquet 格式存储数据

们已经介绍过在 Hive 中使用 Avro,Parquet 格式来存储数据。今天我们将介绍一下如何在 Impala中使用 Parquet 格式。

1. 跟 Hive 中一样,我们在创建表的时候可以通过 STORED AS PARQUET 语句来指定文件的存储格式。

 

[sql] view plain copy

print?

  1. CREATE TABLE stocks_parquet LIKE stocks STORED AS PARQUET;  

 

2. 我们可以使用 Insert 语句来将一张旧表中的数据拷贝到新的 Parquet 存储格式的表中。
 
 

[sql] view plain copy

print?

  1. INSERT OVERWRITE TABLE stocks_parquet SELECT * FROM stocks;  

 

3. 检查 Parquet 表的创建:
 

[sql] view plain copy

print?

  1. > SHOW TABLE STATS stocks_parquet;  
  2. Query: show TABLE STATS stocks_parquet  
  3. +-------+--------+--------+---------+  
  4. | #Rows | #Files | Size   | Format  |  
  5. +-------+--------+--------+---------+  
  6. | -1    | 1      | 2.56KB | PARQUET |  
  7. +-------+--------+--------+---------+  

 

你也可以在创建表的时候就指定文件的存储格式:
 

[sql] view plain copy

print?

  1. CREATE TABLE stocks_parquet_internal (  
  2.   sym STRING,  
  3.   dt STRING,  
  4.   open DOUBLE,  
  5.   high DOUBLE,  
  6.   low DOUBLE,  
  7.   close DOUBLE,  
  8.   volume INT,  
  9.   adj_close DOUBLE  
  10. ) STORED AS PARQUET;  

 

Impala 非常好的一点就是它允许 Insert...Values 语法。这一点跟传统的 SQL 很像,也更容易获取数据。 注意:对于大型表的数据加载,我们不建议使用 INSERT..VALUES. 相反的,使用 Load DATA 语句或者 INSERT INTO...select 或者 Create Table AS SELECT 。。语句可以更高效的将文件移到你在 HDFS 目录中。前两个选项会将文件 move 到表的 HDFS 目录,后两个会并行 Load 数据。
 

[sql] view plain copy

print?

  1. INSERT INTO stocks_parquet_internal  
  2. VALUES ("YHOO","2000-01-03",442.9,477.0,429.5,475.0,38469600,118.7);  

 

Parquet 是一种柱状存储格式,所有在查询中选择更少的列会让查询执行更快。我们应该尽量避免以下这种查询方式:
 

[delphi] view plain copy

print?

  1. SELECT * FROM stocks;  

 

当然,我们也可以在 Hive 中使用 Parquet 数据存储格式,具体应用介绍请参考:Hive_1. 数据存储 & 压缩

转载于:https://my.oschina.net/sniperLi/blog/751333

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值