【发布时间】:2014-03-27 21:14:05
【问题描述】:
使用 Hive 0.12.0,我希望填充一个已分区的表,并使用存储在 HDFS 上的数据的存储桶。我还想在一个外键上创建这个表的索引,在加入表时我会经常使用它。
我有一个可行的解决方案,但有些事情告诉我它非常低效。
这是我的工作: 我将数据加载到“平面”中间表中(没有分区,没有存储桶):
LOAD DATA LOCAL INPATH 'myFile' OVERWRITE INTO TABLE my_flat_table;
然后我从这个平面表中选择我需要的数据并将其插入到最终的分区和分桶表中:
FROM my_flat_table
INSERT OVERWRITE TABLE final_table
PARTITION(date)
SELECT
col1, col2, col3, to_date(my_date) AS date;
分桶是在我创建最终表格时定义的:
CREATE TABLE final_table
(col1 TYPE1, col2 TYPE2, col3 TYPE3)
PARTITIONED BY (date DATE)
CLUSTERED BY (col2) INTO 64 BUCKETS;
最后,我在用于分桶的同一列上创建索引(这有用吗?):
CREATE INDEX final_table_index ON TABLE final_table (col2) AS 'COMPACT';
所有这些显然真的很慢,那么我将如何优化加载过程?
谢谢
【问题讨论】: