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

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

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

CREATE TABLE stocks_parquet LIKE stocks STORED AS PARQUET;

2. 我们可以使用 Insert 语句来将一张旧表中的数据拷贝到新的 Parquet 存储格式的表中。
 
   
INSERT OVERWRITE TABLE stocks_parquet SELECT * FROM stocks;

3. 检查 Parquet 表的创建:
> SHOW TABLE STATS stocks_parquet;
Query: show TABLE STATS stocks_parquet
+-------+--------+--------+---------+
| #Rows | #Files | Size   | Format  |
+-------+--------+--------+---------+
| -1    | 1      | 2.56KB | PARQUET |
+-------+--------+--------+---------+

你也可以在创建表的时候就指定文件的存储格式:
CREATE TABLE stocks_parquet_internal (
  sym STRING,
  dt STRING,
  open DOUBLE,
  high DOUBLE,
  low DOUBLE,
  close DOUBLE,
  volume INT,
  adj_close DOUBLE
) STORED AS PARQUET;

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

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


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

你可能感兴趣的:(Hive,Parquet,Impala)