我们有一些需要6-12小时完成的Postgres查询,并且想知道Hadoop是否适合更快地完成它。我们有(2)Hadoop可以使用的具有256GB内存的64个核心服务器。Hadoop适用于此?
我们正在运行PostgreSQL 9.2.4。 Postgres只使用一个服务器上的一个核心进行查询,所以我想知道Hadoop是否能够以大约128倍的速度完成这项工作,减去开销。我们有两组数据,每组数据都有数百万行。
集一:
id character varying(20), a_lat double precision, a_long double precision, b_lat double precision, b_long double precision, line_id character varying(20), type character varying(4), freq numeric(10,5)
组两个:
a_lat double precision, a_long double precision, b_lat double precision, b_long double precision, type character varying(4), freq numeric(10,5)
我们对所有的纬度,经度,类型和频率字段的索引,使用B树。两个表都有“VACUUM ANALYZE”在查询之前运行。
Postgres的查询是:
SELECT
id
FROM
setone one
WHERE
not exists (
SELECT
'x'
FROM
settwo two
WHERE
two.a_lat >= one.a_lat - 0.000278 and
two.a_lat <= one.a_lat + 0.000278 and
two.a_long >= one.a_long - 0.000278 and
two.a_long <= one.a_long + 0.000278 and
two.b_lat >= one.b_lat - 0.000278 and
two.b_lat <= one.b_lat + 0.000278 and
two.b_long >= one.b_long - 0.000278 and
two.b_long <= one.b_long + 0.000278 and
(
two.type = one.type or
two.type = 'S'
) and
two.freq >= one.freq - 1.0 and
two.freq <= one.freq + 1.0
)
ORDER BY
line_id
那个东西的Hadoop的类型可以做什么?如果是的话,你能指出我的方向是正确的吗?
很多细节缺失得到一个很好的答案。什么版本的postgresql?你的桌子是什么样的?你有分析过他们吗?你有没有索引经纬度?你看过PostGIS吗?你能否将查询分解为可以并行运行的逻辑单元? – bma
为什么你不只是将查询拆分为网格?它看起来非常地理上受到限制。这比将整个系统移植到hadoop要少得多。 –
我更新了有关Postgres版本,表格和索引的更多细节。我会尝试使用PostGIS。我不熟悉将查询拆分为逻辑单元。你能解释更多吗? – user1517922