2

Sparkランタイムを介して大きなgzipファイルをハイブに読み込んで、SequenceFile形式に変換しようとしています

そして、私はこれを効率的に行いたいと思っています。

私の知る限り、Spark は、テキスト ファイルの場合と同様に、gzip ファイルごとに 1 つのマッパーのみをサポートします。

読み取られる gzip ファイルのマッパーの数を変更する方法はありますか? または寄木細工のような別の形式を選択する必要がありますか?

私は現在立ち往生しています。問題は、私のログ ファイルが txt 形式に保存された json のようなデータであり、その後 gzip されたことorg.apache.spark.sql.jsonです。

私が見た例では、データを SequenceFile に変換すると、csv 形式の単純な区切り文字がいくつかあります。

私はこのクエリを実行していました:

create TABLE table_1
USING org.apache.spark.sql.json
OPTIONS (path 'dir_to/file_name.txt.gz');

しかし、今は次のように書き直さなければなりません。

CREATE TABLE table_1(
ID BIGINT,
NAME STRING 
)
COMMENT 'This is table_1 stored as sequencefile'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS SEQUENCEFILE;

LOAD DATA INPATH 'dir_to/file_name.txt.gz' OVERWRITE INTO TABLE         table_1;


LOAD DATA INPATH 'dir_to/file_name.txt.gz' INTO TABLE table_1;


INSERT OVERWRITE TABLE table_1 SELECT id, name from table_1_text;

INSERT INTO TABLE table_1 SELECT id, name from table_1_text;

これはこれを行うための最適な方法ですか、それともこの問題に対するより簡単なアプローチはありますか? 助けてください!

4

1 に答える 1

2

gzip テキストファイル ファイルは分割できないため、1 つのマッパーのみが起動されます。複数のマッパーを使用する場合は、他のデータ形式を選択する必要があります。

巨大な json ファイルがあり、hdfs にストレージを保存したい場合は、bzip2 圧縮を使用して hdfs 上の json ファイルを圧縮します。何も変更せずに、ハイブから .bzip2 json ファイルをクエリできます。

于 2017-07-21T05:49:18.483 に答える