Impala 支持幾種熟悉的 Apache Hadoop 中使用的文件格式。Impala 能夠加載或查詢其餘 Hadoop 組件如 Pig 或 MapReduce 產生的數據文件,而且 Impala 產生的數據文件也能夠被其餘組件使用。下面的章節討論 Impala 使用各類文件格式的步驟、限制和性能注意事項。 html
Impala 表使用的文件格式具備重要的性能意義。一些文件格式包括壓縮支持,會影響到硬盤上數據的大小,所以,也影響反序列化數據時所需的 I/O 和 CPU 資源的數量。由於查詢一般以移動和解壓縮數據開始,所需的 I/O 和 CPU 資源是查詢性能的限制因素。爲了不處理過程當中這一部分潛在的衝突,數據一般進行壓縮。經過壓縮數據,更小的字節數從硬盤傳輸給內存。這減小了傳輸數據的時間,但應權衡考慮 CPU 解壓縮內容的時間。 shell
Impala 能夠查詢 Hadoop 中最通用的文件編碼和壓縮編碼(Impala can query files encoded with most of the popular file formats and compression codecs used in Hadoop)。Impala 能夠建立並插入數據到部分而不是所有文件格式;對於 Impala 沒法寫入的文件格式,在 Hive 中建立這些表,在 impala-shell 中執行 INVALIDATE METADATA 語句,並經過 Impala 查詢這些表。文件格式能夠是結構化的,他們可能包含元數據和內置的壓縮支持。支持的文件格式包括: 架構
File Type | Format | Compression Codecs | Impala Can CREATE? | Impala Can INSERT? |
---|---|---|---|---|
Parquet | Structured | Snappy, GZIP; currently Snappy by default | Yes. | 支持:CREATE TABLE, INSERT, 查詢 |
Text | Unstructured | LZO | Yes. 不指定 STORED AS 子句的 CREATE TABLE 語句,默認的文件格式就是未壓縮文本,使用 ASCII 0x01 字符進行分割(一般對應 Ctrl-A). | 支持:CREATE TABLE, INSERT, 查詢。若是使用 LZO 壓縮,則必須在 Hive 中建立表和加載數據 |
Avro | Structured | Snappy, GZIP, deflate, BZIP2 | No, create using Hive. | 僅支持查詢,在 Hive 中加載數據 |
RCFile | Structured | Snappy, GZIP, deflate, BZIP2 | Yes. | 僅支持查詢,在 Hive 中加載數據 |
SequenceFile | Structured | Snappy, GZIP, deflate, BZIP2 | Yes. | 僅支持查詢,在 Hive 中加載數據 |
Impala 支持下列壓縮編解碼器: app
LZO, 僅支持文本文件。Impala 能夠查詢 LZO 壓縮文本文件表,但目前沒法建立和插入數據;在 Hive 中執行這些操做 工具
不一樣的文件格式和壓縮編解碼器適合不一樣的數據集。儘管不管文件格式如何,Impala 一般能夠提高性能收益,可是爲你的數據選擇合適的格式能夠得到進一步的性能提高。 對於特定的表,考慮如下因素來肯定採用哪一種文件格式和壓縮方式的組合: oop