prestoでクエリを実行する場所から、hadoopからハイブへのデータのロードを高速化する方法を探しています。私のワークフローでは、hadoop で単一の csv ファイルから始めます。
CREATE EXTERNAL TABLE src_x (KEY INT, X2 INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ","
STORED AS TEXTFILE
LOCATION "${SRC_X_DIR}"
TBLPROPERTIES('skip.header.line.count'='1');
インスタント、csv のビューのみを作成します。
次に、すべてのカウントはすでにかなり遅いです...
select count(*) from src_x;
5000000000
Time taken: 1547.581 seconds, Fetched: 1 row(s)
ターゲット テーブルは次のように準備されます。
CREATE TABLE IF NOT EXISTS x (KEY INT, X2 INT)
STORED AS ORC
TBLPROPERTIES("orc.compress"="SNAPPY");
そして読み込まれました:
INSERT OVERWRITE TABLE x SELECT * FROM src_x;
Loading data to table benchmark.x
Table benchmark.x stats: [numFiles=1, numRows=5000000000, totalSize=18528938624, rawDataSize=17179977764]
Time taken: 19429.984 seconds
この単一のテーブルは、hadoop からハイブにロードするのに約 5 時間以上かかります。2 つの整数列を持つ 103 GB の csv には長すぎませんか? 理想的には、5e9 のより良いスケーリングだけでなく、より大きなセットも目指します。
250GB の 10 台のマシンのクラスターがそれを処理する必要があります。それは私のバージョンに何らかの形で関連しているのでしょうhive-0.14.0.2.2.6.3
か ( )、またはカスタム設定がここで役割を果たすことができますか?