Impala 如何使用 Hadoop 文件格式

Impala 如何使用 Hadoop 文件格式

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 查詢這些表。文件格式能夠是結構化的,他們可能包含元數據和內置的壓縮支持。支持的文件格式包括: 架構

Table 1. File Format Support in 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

  • Snappy. 因其在壓縮比和解壓速度間的有效平衡而推薦。Snappy 壓縮很是快,而 GZIP 壓縮比更高
  • GZIP. 指望達到最大壓縮比(最少硬盤空間)時推薦
  • Deflate.
  • BZIP2.
  • LZO, 僅支持文本文件。Impala 能夠查詢 LZO 壓縮文本文件表,但目前沒法建立和插入數據;在 Hive 中執行這些操做 工具

選擇表的文件格式

不一樣的文件格式和壓縮編解碼器適合不一樣的數據集。儘管不管文件格式如何,Impala 一般能夠提高性能收益,可是爲你的數據選擇合適的格式能夠得到進一步的性能提高。 對於特定的表,考慮如下因素來肯定採用哪一種文件格式和壓縮方式的組合: oop

  • 假如你正在使用的文件是已經支持的文件格式,實用起見 Impala 表應採用相同的格式。加入原始的文件格式沒法提供可接受的查詢性能和資源使用,考慮建立一個使用不一樣文件格式和壓縮特徵的新表,並使用 INSERT 語句經過複製數據文件到新表作一次轉換。依賴於文件格式的不一樣,你可能須要在 impala-shell 或 Hive 中執行 INSERT 語句
  • 文本文件格式可使用多種工具方便的生成,而且人類可讀易於嚴重和調試。這些特性就是爲何文本文件是 Impala CREATE TABLE 語句的默認格式。當性能和資源使用是主要考慮時,使用其餘格式之一併考慮壓縮。一個典型的工做流可能涉及經過複製 CSV 或 TSV 文件到對應的數據目錄把數據存入 Impala 表中,而後使用 INSERT ... SELECT 語法複製數據到使用其餘更緊湊的文件格式的表中
  • 假如你的架構涉及到存放在內存中被查詢的數據,不要進行壓縮。這時沒有 I/O 節省由於不須要把數據移動到硬盤上,可是解壓數據會有 CPU 成本
相關文章
相關標籤/搜索