我正在寻找一种方法来加速从hadoop到hive的数据加载,我从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上创建视图 然后算一切都很慢......
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
这张单人表需要大约5小时才能从hadoop加载到hive。具有两个整数列的103GB csv不是太长了吗?理想情况下,我的目标不仅仅是为了更好地扩展5e9而且还有更大的设置
250GB的10台机器的集群应该处理它。是否与我的版本有某种关联(hive-0.14.0.2.2.6.3
)或某些自定义设置可以在这里发挥作用?