我正面臨着一個大數據問題。我有一個大的MySQL(Percona)表,每天加入一次,生產約250億行。我試圖將所有行組合在一起並聚合,以產生結果。查詢是一個簡單的加入:hadoop會比mySQL快嗎
--This query produces about 25 billion rows
SELECT t1.colA as 'varchar(45)_1', t2.colB as 'varchar(45)_2', count(*)
FROM table t1
JOIN
table t2
on t1.date = t2.date
GROUP BY t1.colA, t2.colB
問題是這個過程需要一個多星期才能完成。我已經開始閱讀關於hadoop,並想知道map reduce功能是否可以提高處理數據的時間。我注意到HIVE是一個很好的附加組件,允許像hadoop這樣的SQL查詢。這一切看起來非常有前途,但我面對,我只在一臺機器上運行的一個問題:
6-core i7-4930K
16GB RAM
128 SSD
2TB HDD
當我運行與MySQL查詢,正在用我的資源大麥,只有約RAM 4GB的一個核心只有100%工作,另一個核心工作接近0%。我檢查了這一點,發現MySQL是單線程的。這也是爲什麼Hadoop看起來很有前途,因爲我注意到它可以運行多個映射器函數以更好地利用我的資源。我的問題仍然是在我可以在幾個小時內產生結果的情況下,hadoop能夠取代MySQL,儘管hadoop只會在單個節點上運行(儘管我知道它是用於分佈式計算的)。
我只是想知道(不是你的問題的答案),但只是想知道在這裏......爲什麼需要這個結果集?這個結果集旨在回答什麼問題?這個查詢解決了什麼問題? (最有效的查詢是未運行的查詢。) – spencer7593 2014-09-22 19:28:14
這是一個天氣數據集。在一個簡單的表格中,它會輸出一個位置在同一天的高低溫度上相同的次數(實際上它的數量比高低的要多一些,但它是它)。最後,我希望在同一天獲得所有具有相同高低溫度的地點(這將產生約250億個地點),並且希望得到結果集,哪些地方符合此條件的次數超過N次 – user2924127 2014-09-22 19:39:39
您可能會檢查[Spark SQL](https://spark.apache.org/sql/)。在多個線程上運行羣集或單臺計算機。 – climbage 2014-09-22 23:22:20