我們有一些需要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