2

我正在寻找一种方法来加速将数据从 hadoop 加载到我使用 presto 查询的配置单元。在我的工作流程中,我从 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 上创建视图。
然后count all已经很慢了...

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 加载到 hive 大约需要 5 小时以上。对于具有两个整数列的 103GB csv 来说,这不是太长了吗?理想情况下,我的目标不仅是在 5e9 上更好地缩放,而且还包括更大的系列。
10 台机器 250GB 的集群应该可以处理这个问题。它是否与我的版本有关(hive-0.14.0.2.2.6.3)或某些自定义设置可以在这里发挥作用?

4

0 回答 0