Hadoop的Python语言封装
生活随笔
收集整理的這篇文章主要介紹了
Hadoop的Python语言封装
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Hadoop的Python語言封裝
Gao Ang 發表于 2010年05月25日 11:38 | Hits: 245
Hadoop使 用Java語言實現,編寫具體的應用業務除了借助Hadoop的Java API外,還可以使用開發者所熟悉的Python或C++等其他語言編碼。在Hadoop安裝路徑的/src/examples/目錄中,給出了 Python實現的分布式應用示例。除了將Python代碼通過Jython運行時轉換為jar包部署,還可借助Hadoop Streaming工具,利用可執行程序或腳本代碼實現Map-Reduce中的Mapper或Reducer過程,借助標準輸入輸出交互數據而不需編寫 Java實現類。
如何以Pythonic的方式完成Hadoop經典的WordCount詞頻統計工作,來自德國的開發者Michael G.Noll在博客中撰文講解了實現方法: 在Python編碼中,通過STDIN標準輸入和STDOUT標準輸在Map和Reduce代碼之間傳輸數據。Python的sys.stdin方法讀取 輸入數據,并通過sys.stdout打印輸出數據,而數據的交互處理過程交由Hadoop Streaming來處理。以同樣的方式,可借助Perl、Ruby或其他動態語言完成Map-Reduce處理過程。
在Hadoop API的Python封裝方面,著名音樂站點Last.fm發布了基于Python的Dumbo(小 飛象)項目,Dumbo能夠幫助Python開發者更方便的編寫Hadoop應用,并且Dumbo為MapReduce應用提供了靈活易用的Python API。Last.fm的開發者,同時也是Dumbo項目發起人Klaas Bosteels 認為,對于定制Hadoop應用,使用Python語言代替Java會讓工作變得更有效率。
在基于Dumbo框架的應用實現中,不需模仿Michael G.Noll給出的代碼將mapper和reducer存放于不同的文件中,而只需在程序中定義mapper和reducer函數,并通過語句 dumbo.run(mapper,reducer)來啟動執行過程。在作者給出的Dumbo示例中, 能夠將Hadoop原先60行Java源代碼實現的WordCount示例,簡化為Python實現的7行源代碼來完成。此外,Dumbo還提供了一些易 用的功能,包括向dumbo.run()執行操作傳遞第三方參數。并在Dumbo項目文檔中,給出了從Apache訪問日志文件中進行IP統計的完整示 例,以及四個簡短的應用示例。
另外一個相似的項目Happy, 則為Jython開發者使用Hadoop框架提供了便利,Happy框架封裝了Hadoop的復雜調用過程,讓Map-Reduce開發變得更為容易。 Happy中的Map-Reduce作業過程在子類happy.HappyJob中定義,當用戶創建類實例后,設置作業任務的輸入輸出參數,然后調用 run()方法即可啟動分治規約處理,此時,Happy框架將序列化用戶的作業實例,并將任務及相應依賴庫拷貝到Hadoop集群執行。目前,Happy 框架已被數據集成站點freebase.com采納,用于進行站點的數據挖掘與分析工作
總結
以上是生活随笔為你收集整理的Hadoop的Python语言封装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++空类默认函数
- 下一篇: 2003年我程序员职业的第一桶金7万元的