示例項(xiàng)目使用說(shuō)明
本文介紹的項(xiàng)目都是完整的可編譯可運(yùn)行的項(xiàng)目,包括MapReduce、Pig、Hive和Spark。
示例項(xiàng)目
示例名稱如下所示,詳情代碼示例請(qǐng)參見(jiàn)集群運(yùn)行。
MapReduce
WordCount:?jiǎn)卧~統(tǒng)計(jì)
Hive
sample.hive:表的簡(jiǎn)單查詢
Pig
sample.pig:Pig處理OSS數(shù)據(jù)實(shí)例
Spark
SparkPi:計(jì)算Pi
SparkWordCount:?jiǎn)卧~統(tǒng)計(jì)
LinearRegression:線性回歸
OSSSample:OSS使用示例
MaxComputeSample:MaxCompute使用示例
MNSSample:MNS使用示例
LoghubSample:Loghub使用示例
依賴資源
測(cè)試數(shù)據(jù)(data目錄下):
The_Sorrows_of_Young_Werther.txt:可作為WordCount(MapReduce或Spark)的輸入數(shù)據(jù)。
patterns.txt:WordCount(MapReduce)作業(yè)的過(guò)濾字符。
u.data:sample.hive腳本的測(cè)試表數(shù)據(jù)。
abalone:線性回歸算法測(cè)試數(shù)據(jù)。
依賴JAR包(lib目錄下):
tutorial.jar:sample.pig作業(yè)需要的依賴JAR包。
準(zhǔn)備工作
本文提供了一些測(cè)試數(shù)據(jù),您將其上傳到OSS中即可使用。您還可以自行準(zhǔn)備以下可選測(cè)試數(shù)據(jù),例如,MaxCompute、MNS、ONS和LogService等。
創(chuàng)建LogService,請(qǐng)參見(jiàn)快速入門。
創(chuàng)建MaxCompute項(xiàng)目和表,請(qǐng)參見(jiàn)創(chuàng)建MaxCompute項(xiàng)目和創(chuàng)建表。
創(chuàng)建ONS,請(qǐng)參見(jiàn)快速入門概述。
創(chuàng)建MNS,請(qǐng)參見(jiàn)快速入門概述。
基本概念
OSSURI:oss://<accessKeyId>:<accessKeySecret>@<bucket>.<endpoint>/a/b/c.txt,用戶在作業(yè)中指定輸入輸出數(shù)據(jù)源時(shí)使用,類似hdfs://。
阿里云AccessKeyId和AccessKeySecret是您訪問(wèn)阿里云API的密鑰。
集群運(yùn)行
開(kāi)源項(xiàng)目運(yùn)行示例如下:
Spark
SparkWordCount:
spark-submit --class SparkWordCount examples-1.0-SNAPSHOT-shaded.jar <inputPath> <outputPath> <numPartition>
參數(shù)說(shuō)明如下:
參數(shù)
描述
inputPath
輸入數(shù)據(jù)路徑。
outputPath
輸出路徑。
numPartition
輸入數(shù)據(jù)RDD分片數(shù)目。
SparkPi:
spark-submit --class SparkPi examples-1.0-SNAPSHOT-shaded.jar
OSSSample:
spark-submit --class OSSSample examples-1.0-SNAPSHOT-shaded.jar <inputPath> <numPartition>
參數(shù)說(shuō)明如下:
參數(shù)
描述
inputPath
輸入數(shù)據(jù)路徑。
numPartition
輸入數(shù)據(jù)RDD分片數(shù)目。
ONSSample:
spark-submit --class ONSSample examples-1.0-SNAPSHOT-shaded.jar <accessKeyId> <accessKeySecret> <consumerId> <topic> <subExpression> <parallelism>
參數(shù)說(shuō)明如下:
參數(shù)
描述
accessKeyId
阿里云AccessKeyId。
accessKeySecret
阿里云AccessKeySecret。
consumerId
消費(fèi)者ID。
topic
每個(gè)消息隊(duì)列都有一個(gè) topic。
subExpression
消息子主題。
parallelism
指定多少個(gè)接收器來(lái)消費(fèi)隊(duì)列消息。
MaxComputeSample:
spark-submit --class MaxComputeSample examples-1.0-SNAPSHOT-shaded.jar <accessKeyId> <accessKeySecret> <envType> <project> <table> <numPartitions>
參數(shù)說(shuō)明如下:
參數(shù)
描述
accessKeyId
阿里云AccessKeyId。
accessKeySecret
阿里云AccessKeySecret。
envType
0表示公網(wǎng)環(huán)境,1表示內(nèi)網(wǎng)環(huán)境。
如果是本地調(diào)試選擇 0,如果是在 E-MapReduce上執(zhí)行請(qǐng)選擇 1。
project
請(qǐng)參見(jiàn)術(shù)語(yǔ)表。
table
請(qǐng)參見(jiàn)術(shù)語(yǔ)表。
numPartition
輸入數(shù)據(jù)RDD分片數(shù)目。
MNSSample:
spark-submit --class MNSSample examples-1.0-SNAPSHOT-shaded.jar <queueName> <accessKeyId> <accessKeySecret> <endpoint>
參數(shù)說(shuō)明如下:
參數(shù)
描述
queueName
Queue的名稱。
accessKeyId
阿里云AccessKeyId。
accessKeySecret
阿里云AccessKeySecret。
endpoint
隊(duì)列數(shù)據(jù)訪問(wèn)地址。
LoghubSample:
spark-submit --class LoghubSample examples-1.0-SNAPSHOT-shaded.jar <sls project> <sls logstore> <loghub group name> <sls endpoint> <access key id> <access key secret> <batch interval seconds>
參數(shù)說(shuō)明如下:
參數(shù)
描述
sls project: LogService
項(xiàng)目名。
sls logstore
日志庫(kù)名。
loghub group name
作業(yè)中消費(fèi)日志數(shù)據(jù)的組名。sls project和sls store相同時(shí),相同組名的作業(yè)會(huì)協(xié)同消費(fèi)sls store中的數(shù)據(jù);不同組名的作業(yè)會(huì)相互隔離地消費(fèi)sls store中的數(shù)據(jù)。
sls endpoint
請(qǐng)參見(jiàn)日志服務(wù)入口。
accessKeyId
阿里云AccessKeyId。
accessKeySecret
阿里云AccessKeySecret。
LinearRegression:
spark-submit --class LinearRegression examples-1.0-SNAPSHOT-shaded.jar <inputPath> <numPartitions>
參數(shù)說(shuō)明如下:
參數(shù)
描述
inputPath
輸入數(shù)據(jù)路徑。
numPartition
輸入數(shù)據(jù)RDD分片數(shù)目。
Mapreduce
WordCount:
hadoop jar examples-1.0-SNAPSHOT-shaded.jar WordCount -Dwordcount.case.sensitive=true <inputPath> <outputPath> -skip <patternPath>
參數(shù)說(shuō)明如下。
參數(shù)
描述
inputPath
輸入數(shù)據(jù)路徑。
outputPath
輸出路徑。
patternPath
過(guò)濾字符文件,可以使用data或patterns.txt。
Hive
hive -f sample.hive -hiveconf inputPath=<inputPath>
參數(shù)說(shuō)明如下。
參數(shù)
描述
inputPath
輸入數(shù)據(jù)路徑。
Pig
pig -x mapreduce -f sample.pig -param tutorial=<tutorialJarPath> -param input=<inputPath> -param result=<resultPath>
參數(shù)說(shuō)明如下:
參數(shù)
描述
tutorialJarPath
依賴Jar包,可使用lib或tutorial.jar。
inputPath
輸入數(shù)據(jù)路徑。
resultPath
輸出路徑。
在E-MapReduce上使用時(shí),請(qǐng)將測(cè)試數(shù)據(jù)和依賴jar包上傳到OSS中,路徑規(guī)則遵循OSSURI定義。
如果集群中使用,可以放在機(jī)器本地。
本地運(yùn)行
這里主要介紹如何在本地運(yùn)行Spark程序訪問(wèn)阿里云數(shù)據(jù)源,例如OSS等。如果希望本地調(diào)試運(yùn)行,需要借助一些開(kāi)發(fā)工具,例如IntelliJ IDEA或者Eclipse,尤其是對(duì)于 Windows環(huán)境,否則需要在Windows機(jī)器上配置Hadoop和Spark運(yùn)行環(huán)境。
IntelliJ IDEA
準(zhǔn)備工作
安裝IntelliJ IDEA、Maven、 IntelliJ IDEA Maven插件、Scala和IntelliJ IDEA Scala插件。
開(kāi)發(fā)流程
雙擊進(jìn)入SparkWordCount.scala。
進(jìn)入作業(yè)配置界面。
選擇 SparkWordCount,在作業(yè)參數(shù)框中按照所需傳入作業(yè)參數(shù)。
單擊 OK。
單擊運(yùn)行,執(zhí)行作業(yè)。
查看作業(yè)執(zhí)行日志。
Scala IDE for Eclipse
準(zhǔn)備工作
安裝Scala IDE for Eclipse、Maven、Eclipse Maven插件。
開(kāi)發(fā)流程
請(qǐng)根據(jù)以下圖示導(dǎo)入項(xiàng)目。
Run As Maven build,快捷鍵是Alt + Shift + X, M,也可以在項(xiàng)目名上右鍵選擇
。等待編譯完后,在需要運(yùn)行的作業(yè)上右鍵,選擇Run Configuration,進(jìn)入配置頁(yè)。
在配置頁(yè)中,選擇 Scala Application,并配置作業(yè)的Main Class和參數(shù)等等。如下圖所示。
單擊Run。
查看控制臺(tái)輸出日志,如下圖所示。