Parquet_2. 在 Impala/Hive 中使用 Parquet 格式儲存資料
阿新 • • 發佈:2019-02-08
在之前我們已經介紹過在 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.
資料儲存 & 壓縮