成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不用Java進行MapReduce編程

云計算
MapReduce的并行處理模式給自己增添了各種問題。雖然Java常用于MapReduce程序,你不見得非要成為Java專家才能享受到Hadoop上MapReduce的好處。

替代手段

MapReduce的并行處理模式給自己增添了各種問題。雖然Java常用于MapReduce程序,你不見得非要成為Java專家才能享受到Hadoop上MapReduce的好處。

三種

MapReduce開發的替代方法包括Pig, streaming MapReduce和域特定語言,比如Scalding。

Pig是一種Hadoop下不借助Java而處理大數據的平臺。Pig,它是Apache Hadoop項目的產品,用Pig Latin寫的MapReduce模型的maps腳本。Pig Latin是一種聲明性編程語言,用于大型數據集。如果你很熟悉SQL或ETL工具,那么PIG Latin對你來學簡單易學。PIG Latin不是像Java,Python或C這樣的通用編程語言。你不會用它來寫復發的程序邏輯,但它非常適合于數據處理任務。

Pig Latin的功能大致可分為三個部分:加載數據,處理數據和存儲數據。

基本的數據加載命令可以用于結構化數據,比如制表符分隔的文件,以及非結構化數據,比如自然語言文本文件。加載命令可以用于壓縮文件,省去了你加載前的解壓工作。

一旦數據被載入Pig schemas,你就可以進行數據轉換了。Pig Latin有關系和算數運算。你可以使用SQL構造,比如FILTER,GROUP和JOIN。 由于這種語言是專為大數據而設計的,因此這里有傳統的SQL里沒有的東西。例如,SAMPLE命令是用來隨機選擇一個數據集的子集;對大數據集樣本的計算統計十分有用。算術和邏輯運算符包括了你要的功能:算數運算,boolean和類型轉換。

你在加載數據并開始處理時,你肯定想把結果存在某處。Pig Latin支持向Hadoop文件系統保存結果或直接交互式顯示的功能。(平臺的名字取的字面意思太明顯了,Pig交互工具叫做Grunt——類似豬的叫聲。)

Pig是處理大量數據的理想選擇,經常是在你開始分析數據或合并多個數據集時。如果你還需要實現更復雜的邏輯,你應該考慮一下streaming MapReduce或Scalding。#p#

Streaming MapReduce 與 Scalding: 取代Java

Streaming MapReduce是Hadoop的一個功能,可以讓你運行MapReduce環境下幾乎用任何語言編寫的程序。

如果你使用命令行來執行一個程序,而且它以標準輸入輸出流來進行交互的,那么你就可以使用streaming MapReduce來運行它。這種可以運行任何語言編寫的程序的能力是有代價的:你必須把你的程序制定成映射或化簡程序。

映射程序接受一個輸入數據流,并產生鍵值對形式的輸出。例如,如果你想要計算每種產品被購買的次數,你可以用Python寫一個映射函數,讀取交易并輸出產品ID和那筆交易中該產品賣出的數量。當然,這會產生一個你需要合計的“產品ID—數量”鍵值對的流。這是化簡函數的工作。

底層MapReduce框架會將運行映射功能的所有實例排序,如此一來一個特定產品ID的數據就會送往同樣的化簡實例。這種情況下的化簡程序是一個簡單的程序,只是添加與產品ID有關的產品數量。最終的輸出是一個產品ID和總銷售量的列表。

這種函數式編程要花一些時間來習慣,不過一旦你掌握了一些模式以后,你可以隨時將你所學到的技術應用于更廣泛的問題中。雖然你不用學Java就能用streaming MapReduce,但如果你用Pig的話,你會更頻繁的使用到MapReduce范式。如果你需要實現的業務邏輯不太適用于Pig Latin,那么streaming MapReduce是一個不錯的選擇。

Pig和streaming MapReduce都是Apache Hadoop項目下的產品,但是還有一些為MapReduce而開發的工具。例如Cascading項目創建了一個隱藏MapReduce實現細節的抽象層。這個抽象層是作為一個Java API實現的,因此Cascading自身還有對Java編程的需要。但是,這個API可以被使用Java虛擬機的其他語言調用,比如Groovy,Clojure,JRuby 和 JPython。

如果你喜歡Scala這種編程語言,它也使用Java虛擬機,那么你可以使用Scalding,一個用于Cascading的Scala API。Scalding是由Twitter開發的,并以開放源代碼的方式發布。Scalding是一種域特定語言,可以讓你寫出類似于Pig腳本上對數據集的迭代,過濾,分組等構建出的代碼。

如果你用Java虛擬機語言(包括Java)但不想花太多時間浪費在重復編寫代碼上,Cascading和Scalding是不錯的選擇。這些域特定語言可以處理日常任務,這樣你就可以專注在你程序的邏輯上。

MapReduce和Hadoop也許就是你某些數據處理和分析任務的絕佳工具。如果你還因為可能需要用到Java而猶豫要不要使用MapReduce,那你就不需要再等了。Pig可以很好的用于我們平時常見的提取,轉換和加載操作等基本數據處理任務。Streaming MapReduce可以讓程序員繼續以他們熟悉的語言進行工作,同時還能從MapReduce中受益。Cascading 和 Scalding 讓開發人員在Java虛擬機語言下工作,同時還能在以Java直接編寫MapReduce函數時引入一個更高級的抽象層。

如果你想在Hadoop利用MapReduce,你可以用以上這些作為Java的替代手段。

責任編輯:王程程 來源: DOIT
相關推薦

2011-12-07 16:50:29

JavaNIO

2010-10-27 10:19:33

UnicodeJava

2012-08-08 09:53:23

HadoopMapReduce

2011-12-08 10:24:53

JavaNIO

2016-09-19 15:14:41

Hadoop Hadoop MapRWordCount

2023-09-27 15:34:48

數據編程

2011-06-13 11:23:33

javasocket

2011-06-13 12:11:06

javasocket

2012-03-30 15:49:26

ibmdw

2018-09-08 09:25:05

編程語言PythonVS Code

2010-03-01 09:43:09

Python編程語言

2023-04-12 08:00:00

人工智能ChatGPTPython

2018-04-16 09:42:25

編程顏色ncurses

2018-10-10 14:21:06

Python 工具程序員

2014-10-22 19:54:09

語音編程

2010-01-11 13:25:59

IDE開發工具

2010-10-20 09:01:36

2020-10-27 11:43:29

低代碼開發工具開發

2009-01-18 11:45:16

PHPXML網站編程

2010-02-02 14:11:14

Python 進行編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕亚洲精品 | 欧美成人激情 | 亚洲人久久 | 日本三级在线网站 | 一区在线视频 | 亚洲国产精品久久久 | 九九综合 | 国产精品入口久久 | 久久亚洲国产精品 | 91精品久久久久久久99 | 久草视频观看 | 在线视频中文字幕 | 91在线视频观看免费 | 韩日一区二区 | 亚洲免费观看视频 | 欧日韩在线 | 一区二区高清不卡 | 国产精品成人69xxx免费视频 | 国产精品久久久久久婷婷天堂 | 精品亚洲永久免费精品 | 人操人人 | 乱码av午夜噜噜噜噜动漫 | 国产在线精品一区二区 | 久久精品成人一区 | 午夜激情在线视频 | 久久久精品亚洲 | 瑟瑟激情 | 午夜国产 | 亚洲一区二区欧美 | 国产区在线观看 | 亚洲精品456 | 天天躁日日躁狠狠的躁天龙影院 | 欧美日韩亚洲三区 | 成人综合视频在线观看 | 天天看逼| 日韩综合一区 | 亚洲一区二区三区免费视频 | 日韩精品人成在线播放 | 亚洲网站在线观看 | 婷婷综合五月天 | 亚洲精品一区中文字幕乱码 |