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

夙愿已清 提交于 2019-12-28 12:40:37

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

们已经介绍过在 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. 数据存储 & 压缩

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!