【问题标题】:modify hive query to force more than 1 reducer修改 hive 查询以强制超过 1 个 reducer
【发布时间】:2016-01-17 18:41:59
【问题描述】:

WRT 一个由 c3.2xlarge 实例组成的 3 节点集群。

我有两张桌子。表 U 有大约 6500 万条记录,包含 在其他领域的纬度和经度。 L表大约有100万 记录,还包含纬度和经度。

U 存储为 ORC 表。

任务是确定在 10 英里半径范围内有多少 U 记录 L.的位置。

select l.id, count(u.id) from U u, L l where 3960 *
acos(cos(radians(l.lat)) * cos(radians(u.lat)) * cos(radians(l.long) -
radians(u.long)) + sin(radians(l.lat)) * sin(radians(u.lat))) < 10.0
group by l.id;

3960 * acos(cos(radians(l.lat)) * cos(radians(u.lat)) * cos(radians(l.long) - radians(u.long)) + sin(radians(l.lat)) * sin(radians(u.lat))) < 10.0 位只是纬度/经度之间的距离 对应小于 10 英里的限制。

问题:查询似乎需要很长时间才能完成。虽然地图 阶段完成相对较快,减少阶段卡在某个 固定百分比(80% ish)

我在 Hive 发出的输出消息中注意到了这一点。 数量 减少编译时确定的任务:1

我尝试通过设置来增加减速器的数量 ma​​pred.reduce.tasks 到 7,但它总是以 1 结束。我不是 成功地增加了reducer的数量。

This answer 似乎暗示如果我以不同的方式编写查询,那么我可以强制使用多个减速器。但我还没有做到这一点。

执行时间估计:对于 L 中的单个位置,大约需要 60 秒才能得到答案。按照这个帐户,它应该需要 6000 万秒,也就是大约 700 天!需要这么多时间吗?即使是 Hadoop。

我也尝试过设置额外的约束,比如限制纬度, 长在 10 英里乘 10 英里的方形盒子中,位置在 L 的中心 盒子,但现在 1 个位置花费的时间是 40 秒 不是很大的进步。

问题:

1) 我怎样才能强制更多数量的减速器? 2)是否有更好的(就执行时间而言)查询? 3) 任何其他可以帮助我解决此问题的建议。

版本: Hadoop - 2.7.0 Java 1.7.0_80 Hive 1.2.1

【问题讨论】:

  • 我认为您应该查看 Hive 的 GIS 扩展:cwiki.apache.org/confluence/display/Hive/Spatial+queries
  • 您使用的是哪个版本的 Hadoop? mapreduce.job.reduces 取代了 Hadoop 2.x 中的 mapreduce.job.reduces
  • 有一个交叉连接U x L,然后过滤。交叉连接乘以行。是否可以将 WHERE 子句转换为加入 ON 子句?像这样: FROM U u INNER JOIN L l ON (3960 * acos(cos(radians(l.lat)) * cos(radians(u.lat)) * cos(radians(l.long) - radians(u.long )) + sin(radians(l.lat)) * sin(radians(u.lat)))

标签: sql hadoop hive bigdata


【解决方案1】:

如果您使用的是 Hadoop 2,指定 reducer 的正确方法是:

SET mapreduce.job.reduces=7;

这与 Hadoop 2 中所做的更改有关。我有您描述的相同行为,更新到上述命令,并成功设置了 reduce 任务。我不确定 Hadoop 如何选择必要的减速器数量,但在某些情况下它似乎确实很小,这可能会导致显着的性能滞后。

【讨论】:

    【解决方案2】:

    如前所述,

    ma​​pred.reduce.tasks 替换为 ma​​preduce.job.reduces

    查看此article 中所有已弃用的属性和这些已弃用值的新值。

    除了不推荐使用的属性之外,您还必须迁移一些功能以及在此article中进行的说明

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      相关资源
      最近更新 更多