2013-04-01 45 views
-1

當我們使用Hadoop連接到像MYSQL這樣的RDBMS時,我們通常會從DB獲取一條記錄到一個用戶定義的類中,該類擴展了DBWritable和Writable。如果我們的SQL查詢生成N個記錄作爲輸出,那麼將記錄讀入用戶定義的類的操作將執行N次。有沒有辦法讓我可以同時獲得更多的記錄到映射器中,而不是每次都有1條記錄?DBInputFormat多個記錄處理

回答

1

如果我理解正確,那麼您認爲Hadoop會導致N SELECT語句置頂。那是不正確的。正如您在DBInputFormat's source中看到的那樣,它會根據Hadoop認爲合適的數據創建大量行。

很顯然,每個映射器都必須執行一個查詢來獲取一些數據以供它處理,並且它可能會重複執行,但這仍然絕對不在表格中的行數附近。但是,如果性能下降,您最好將數據轉儲到HDFS/Hive中,然後從中進行處理。