【发布时间】:2014-09-04 06:05:50
【问题描述】:
我在蜂巢中有两张桌子。一个有大约 200 万条记录,另一个有 1400 万条记录。我正在加入这两个表。我也在 WHERE 子句中应用 UDF。 JOIN 操作耗时过长。
我尝试多次运行查询,但它运行了大约 2 小时,我的减速器仍然保持在 70%,之后我收到异常 "java.io.IOException: No space left on device " 然后工作就被杀死了。
我尝试设置如下参数:
set mapreduce.task.io.sort.mb=256;
set mapreduce.task.io.sort.factor=100;
set mapreduce.map.output.compress=true;
set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.GzipCodec;
set mapred.child.java.opts=-Xmx1024m;
我的查询 -
insert overwrite table output select col1, col2, name1, name2, col3, col4,
t.zip, t.state from table1 m join table2 t ON (t.state=m.state and t.zip=m.zip)
where matchStrings(concat(name1,'|',name2))>=0.9;
上面的查询需要 8 个 mapper 和 2 个 reducer。
有人可以建议我应该做些什么来提高性能。
【问题讨论】:
-
我在这个查询的任何地方都没有看到
WHERE子句。
标签: performance hadoop hive