我们有一些 Postgres 查询需要 6 到 12 小时才能完成,并且想知道 Hadoop 是否适合更快地完成它。我们有 (2) 64 台核心服务器和 256GB 的 RAM,Hadoop 可以使用这些服务器。
我们正在运行 PostgreSQL 9.2.4。Postgres 只在一台服务器上使用一个核心进行查询,所以我想知道 Hadoop 是否可以将其速度提高大约 128 倍,减去开销。
我们有两组数据,每组都有数百万行。
套餐一:
id 字符变化(20), a_lat 双精度, a_long 双精度, b_lat 双精度, b_long 双精度, line_id 字符变化(20), 键入字符变化(4), 频率数字(10,5)
设置二:
a_lat 双精度, a_long 双精度, b_lat 双精度, b_long 双精度, 键入字符变化(4), 频率数字(10,5)
我们使用 btree 在所有 lat、long、type 和 freq 字段上都有索引。两个表都在查询之前运行“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 可以做的事情吗?如果是这样,你能指出我正确的方向吗?