2017-12-18 270 views
-1

我正在一個項目中接收大約10個文件,每個文件包含大小爲200GB的文件。我的項目要求是從每個文件中提取數據,並與其他文件進行連接並提取數據。Java中的大數據處理

E.G像我有文件1.txt我有帳戶ID和我有文件2.txt,我有帳戶ID和帳戶名稱。根據第一個文件的帳戶ID我需要從第二個文件提取數據。

這樣我需要對10個文件中的每一個執行操作並創建最終的輸出文件。

我目前正在Java中這是真正花時間的過程。大約需要4到5個小時。

我可以通過改變來提高我的表現嗎?是否有任何技術或任何工具或框架,我可以與Java集成並提高我的表現?

我已經使用了以下方法。

1)Apache Drill-我正在執行連接查詢 結果:由於文件大小過大,Drill會拋出Drillbit異常。

2)Apache Beam-我正在使用並行處理來加入文件。 結果:它在組合功能下給我Out Out Memory異常。

我正在從hadoop讀取這些數據。

+0

爲什麼你需要使用Java下載本地處理的數據?你能用Hive這樣的工具直接處理數據嗎? –

+0

您是否增加了梁執行器或鑽頭堆大小? Hive,Spark或Pig都是大多數hadoop發行版中的典型工具 –

+0

請包含您的Beam代碼並說明您使用的是哪個版本的Beam SDK和哪個亞軍。 – jkff

回答

-1
+0

Drill還使用內存模型處理hadoop數據 –

+0

@ cricket_007 OP在我的回答後添加了一些附加信息(包括Drill和Beam信息)。所以我不知道他使用什麼工具。那麼爲什麼低估我??? – Uata

+0

我的不好。 「我建議Spark」+ [某些鏈接不完全是答案](https://meta.stackexchange。COM /問題/ 8231 /是 - 答案 - 即,剛剛包含鏈接別處 - 真的好 - 答案)。它也沒有建議使用MapReduce。那個「Java進程」可能已經是Spark了。 –