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

来源:互联网 发布:网络与生活论文2000字 编辑:程序博客网 时间:2024/05/18 17:25

在之前我们已经介绍过在 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_internalVALUES ("YHOO","2000-01-03",442.9,477.0,429.5,475.0,38469600,118.7);

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


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

0 0
原创粉丝点击