0

読み取り/書き込みパフォーマンスのためにファイルを圧縮する別の方法を使用しようとしています。私が調査した方法の 1 つは、Snappy 圧縮を使用することです。

これまでのところ、非常にうまく機能しており、HDFS に取り込んで、-text コマンドを使用して解凍し、値を確認することができました。実際の問題は、データをハイブにインポートしようとしたときに発生します。

データをハイブにインポートするときは、Snappy 圧縮ファイルを読み取るようにパラメーターを設定するとともに、単純な外部テーブルを作成します...

SET hive.exec.compress.output=true;
SET mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
SET mapred.output.compression.type=BLOCK;
CREATE EXTERNAL TABLE IF NOT EXISTS test(...
..
)
LOCATION '/user/.../'

テストから SELECT COUNT(*) を実行すると; 正しい行の値を取得します。ただし、SELECT * FROM test limit 100; を実行すると、私が見るのはNULL値だけです。なぜこうなった?何かご意見は?

4

1 に答える 1

0

これらのシナリオでは、ハイブによって生成された mapreduce プログラムはスナッピー ライブラリを見つけることができないため、データを解凍できません。このために、sqoop の lib ディレクトリで利用可能なハイブ auxpath に snappy.jar を追加してみてください。 snappy.jar ファイルが mapreduce にロードされているかどうかを確認するためのクエリ用に、Hive によって生成された MapReduce プログラムのログと構成。

Hive auxpath を設定するには、次のパラメーターを使用して Hive シェルを開始する必要があります: hive --auxpath

これらがあなたの質問に答えてくれることを願っています。

于 2014-08-07T12:57:06.990 に答える