我正在運行的某個作業需要在處理某些大型HDFS文件之前從數據庫(MySQL,儘管這不相關)收集一些元數據。該元數據將被添加到文件中的數據中,並傳遞到更高版本的map/combine/reduce階段。結合Hadoop MapReduce和數據庫查詢
我想知道把這個查詢放在哪裏「正確」的地方。我需要元數據在映射器開始時可用,但將其放置在那裏似乎是多餘的,因爲每個映射器都將執行相同的查詢。我如何(如果有的話)執行一次查詢並在所有映射器上分享其結果?在執行任務的所有節點之間共享數據(除了寫入HDFS之外)是否有共同的方法?謝謝。
此外,如果您的元數據太大而無法存儲在配置中,那麼您應該查看使用DistributedCache。從驅動程序中的數據庫中獲取元數據,保存到文件中,然後將文件添加到DistributedCache中 - 然後該文件將在每個映射器中可用,以便加載到內存並根據需要追加 – 2012-03-26 10:14:57
這兩個答案都非常好,謝謝! – sa125 2012-03-26 11:39:48