自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

不用Java進(jìn)行MapReduce編程

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

替代手段

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

三種

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

Pig是一種Hadoop下不借助Java而處理大數(shù)據(jù)的平臺(tái)。Pig,它是Apache Hadoop項(xiàng)目的產(chǎn)品,用Pig Latin寫的MapReduce模型的maps腳本。Pig Latin是一種聲明性編程語言,用于大型數(shù)據(jù)集。如果你很熟悉SQL或ETL工具,那么PIG Latin對(duì)你來學(xué)簡(jiǎn)單易學(xué)。PIG Latin不是像Java,Python或C這樣的通用編程語言。你不會(huì)用它來寫復(fù)發(fā)的程序邏輯,但它非常適合于數(shù)據(jù)處理任務(wù)。

Pig Latin的功能大致可分為三個(gè)部分:加載數(shù)據(jù),處理數(shù)據(jù)和存儲(chǔ)數(shù)據(jù)。

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

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

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

Pig是處理大量數(shù)據(jù)的理想選擇,經(jīng)常是在你開始分析數(shù)據(jù)或合并多個(gè)數(shù)據(jù)集時(shí)。如果你還需要實(shí)現(xiàn)更復(fù)雜的邏輯,你應(yīng)該考慮一下streaming MapReduce或Scalding。#p#

Streaming MapReduce 與 Scalding: 取代Java

Streaming MapReduce是Hadoop的一個(gè)功能,可以讓你運(yùn)行MapReduce環(huán)境下幾乎用任何語言編寫的程序。

如果你使用命令行來執(zhí)行一個(gè)程序,而且它以標(biāo)準(zhǔn)輸入輸出流來進(jìn)行交互的,那么你就可以使用streaming MapReduce來運(yùn)行它。這種可以運(yùn)行任何語言編寫的程序的能力是有代價(jià)的:你必須把你的程序制定成映射或化簡(jiǎn)程序。

映射程序接受一個(gè)輸入數(shù)據(jù)流,并產(chǎn)生鍵值對(duì)形式的輸出。例如,如果你想要計(jì)算每種產(chǎn)品被購(gòu)買的次數(shù),你可以用Python寫一個(gè)映射函數(shù),讀取交易并輸出產(chǎn)品ID和那筆交易中該產(chǎn)品賣出的數(shù)量。當(dāng)然,這會(huì)產(chǎn)生一個(gè)你需要合計(jì)的“產(chǎn)品ID—數(shù)量”鍵值對(duì)的流。這是化簡(jiǎn)函數(shù)的工作。

底層MapReduce框架會(huì)將運(yùn)行映射功能的所有實(shí)例排序,如此一來一個(gè)特定產(chǎn)品ID的數(shù)據(jù)就會(huì)送往同樣的化簡(jiǎn)實(shí)例。這種情況下的化簡(jiǎn)程序是一個(gè)簡(jiǎn)單的程序,只是添加與產(chǎn)品ID有關(guān)的產(chǎn)品數(shù)量。最終的輸出是一個(gè)產(chǎn)品ID和總銷售量的列表。

這種函數(shù)式編程要花一些時(shí)間來習(xí)慣,不過一旦你掌握了一些模式以后,你可以隨時(shí)將你所學(xué)到的技術(shù)應(yīng)用于更廣泛的問題中。雖然你不用學(xué)Java就能用streaming MapReduce,但如果你用Pig的話,你會(huì)更頻繁的使用到MapReduce范式。如果你需要實(shí)現(xiàn)的業(yè)務(wù)邏輯不太適用于Pig Latin,那么streaming MapReduce是一個(gè)不錯(cuò)的選擇。

Pig和streaming MapReduce都是Apache Hadoop項(xiàng)目下的產(chǎn)品,但是還有一些為MapReduce而開發(fā)的工具。例如Cascading項(xiàng)目創(chuàng)建了一個(gè)隱藏MapReduce實(shí)現(xiàn)細(xì)節(jié)的抽象層。這個(gè)抽象層是作為一個(gè)Java API實(shí)現(xiàn)的,因此Cascading自身還有對(duì)Java編程的需要。但是,這個(gè)API可以被使用Java虛擬機(jī)的其他語言調(diào)用,比如Groovy,Clojure,JRuby 和 JPython。

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

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

MapReduce和Hadoop也許就是你某些數(shù)據(jù)處理和分析任務(wù)的絕佳工具。如果你還因?yàn)榭赡苄枰玫絁ava而猶豫要不要使用MapReduce,那你就不需要再等了。Pig可以很好的用于我們平時(shí)常見的提取,轉(zhuǎn)換和加載操作等基本數(shù)據(jù)處理任務(wù)。Streaming MapReduce可以讓程序員繼續(xù)以他們熟悉的語言進(jìn)行工作,同時(shí)還能從MapReduce中受益。Cascading 和 Scalding 讓開發(fā)人員在Java虛擬機(jī)語言下工作,同時(shí)還能在以Java直接編寫MapReduce函數(shù)時(shí)引入一個(gè)更高級(jí)的抽象層。

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

責(zé)任編輯:王程程 來源: DOIT
相關(guān)推薦

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

2023-09-27 15:34:48

數(shù)據(jù)編程

2016-09-19 15:14:41

Hadoop Hadoop MapRWordCount

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

2023-04-12 08:00:00

人工智能ChatGPTPython

2010-03-01 09:43:09

Python編程語言

2018-04-16 09:42:25

編程顏色ncurses

2014-10-22 19:54:09

語音編程

2010-01-11 13:25:59

IDE開發(fā)工具

2010-10-20 09:01:36

2018-10-10 14:21:06

Python 工具程序員

2020-10-27 11:43:29

低代碼開發(fā)工具開發(fā)

2009-01-18 11:45:16

PHPXML網(wǎng)站編程

2018-11-14 14:33:33

MapReduce數(shù)據(jù)集計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)