サーチ…
SEQUENCEFILE
データを圧縮する必要がある場合は、SEQUENCEFILEにデータを格納します。 GzipまたはBzip2で圧縮されたテキストファイルをTextFileとして保存されたテーブルに直接インポートすることができます。圧縮は自動的に検出され、ファイルはクエリの実行中にオンザフライで解凍されます。
CREATE TABLE raw_sequence (line STRING)
STORED AS SEQUENCEFILE;
ORC
ORC(Optimized Row Columnar)ファイル形式は、Hiveデータを効率的に格納する方法を提供します。他のHiveファイル形式の限界を克服するように設計されています。 ORACファイルを使用すると、Hiveがデータの読み取り、書き込み、および処理中にパフォーマンスが向上します。 ORCファイルには軽量インデックスとブルームフィルタを含めることができます。
参照: https : //cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
ORCは、HortonWorksディストリビューション内のデータを格納するための推奨フォーマットです。
CREATE TABLE tab_orc (col1 STRING,
col2 STRING,
col3 STRING)
STORED AS ORC
TBLPROPERTIES (
"orc.compress"="SNAPPY",
"orc.bloom.filter.columns"="col1",
"orc.create.index" = "true"
)
テーブルの新しいパーティションがORCファイルとして格納されるようにテーブルを変更するには:
ALTER TABLE T SET FILEFORMAT ORC;
Hive 0.14以降、ユーザーは表またはパーティションでCONCATENATE
コマンドを発行することにより、小さなORCファイルの効率的なマージを要求できます。ファイルは再スキャンせずにストライプレベルでマージされます。
ALTER TABLE T [PARTITION partition_spec] CONCATENATE;
PARQUET
Hive 0.13.0以降では、寄木細工の柱状ストレージ形式。寄木張りは、複雑なネストされたデータ構造を念頭に置いて構築され、Dremelの論文に記載されているレコードシュレッディングとアセンブリアルゴリズムを使用しています。このアプローチはネストされた名前空間の単純な平坦化より優れていると考えています。
寄木張りは、非常に効率的な圧縮および符号化方式をサポートするように構築されています。複数のプロジェクトが、適切な圧縮および符号化方式をデータに適用することによるパフォーマンスの影響を実証しました。寄木張りでは、圧縮スキームを列単位のレベルで指定することができ、将来的には、発明され実装されたときにさらに多くのエンコーディングを追加できるようになります。
寄木張りは、Cloudera分布のインパラテーブルを持つファイル形式が推奨されます。
参照: http : //parquet.apache.org/documentation/latest/
CREATE TABLE parquet_table_name (x INT, y STRING) STORED AS PARQUET;
AVRO
AvroファイルはHive 0.14.0以降でサポートされています。
Avroは、ApacheのHadoopプロジェクトで開発されたリモートプロシージャコールとデータのシリアル化フレームワークです。 JSONを使用してデータ型とプロトコルを定義し、コンパクトなバイナリ形式でデータをシリアライズします。主な用途はApache Hadoopです。ここでは、永続データのシリアル化形式と、Hadoopノード間の通信、およびクライアントプログラムからHadoopサービスへの通信のためのワイヤ形式の両方を提供できます。
AVRO形式の指定: https : //avro.apache.org/docs/1.7.7/spec.html
CREATE TABLE kst
PARTITIONED BY (ds string)
STORED AS AVRO
TBLPROPERTIES (
'avro.schema.url'='http://schema_provider/kst.avsc');
スキーマファイルを使用せずに以下の構文を使用することもできます。
CREATE TABLE kst (field1 string, field2 int)
PARTITIONED BY (ds string)
STORED AS AVRO;
上記のSTORED AS AVRO
節の例は、次のものと同等です。
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
テキストファイル
TextFileは、構成パラメータhive.default.fileformatの設定が異なる場合を除き、デフォルトのファイル形式です。区切られたテキストファイルのフィールド名を使って、ハイブ上にテーブルを作成することができます。たとえば、csvファイルに3つのフィールド(id、name、salary)が含まれており、 "employees"というハイブでテーブルを作成したいとします。次のコードを使用してハイブにテーブルを作成します。
CREATE TABLE employees (id int, name string, salary double) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
これでテーブルにテキストファイルを読み込むことができます:
LOAD DATA LOCAL INPATH '/home/ourcsvfile.csv' OVERWRITE INTO TABLE employees;
データが正常に読み込まれたかどうかを確認するためにハイブにテーブルの内容を表示する:
SELECT * FROM employees;