本文以開發WordCount MapReduce作業為例,為您介紹如何通過MaxCompute Studio編寫MapReduce程式及產生JAR包,並在MaxCompute用戶端上運行MapReduce作業。
前提條件
請確認您已滿足如下條件:
已安裝並配置MaxCompute用戶端。詳情請參見安裝並配置MaxCompute用戶端。
已安裝MaxCompute Studio並串連MaxCompute專案。詳情請參見安裝MaxCompute Studio和管理專案串連。
已準備好來源資料檔案並儲存至本地。
本文的樣本資料檔案名稱為data.txt,內容為
hello,odps,儲存位置為MaxCompute用戶端的bin目錄。
注意事項
如果您使用Maven開發MapReduce程式,可以從Maven庫中搜尋odps-sdk-mapred、odps-sdk-commons和odps-sdk-core擷取所需版本的Java SDK(本文以0.36.4-public版本為例),pom.xml檔案需要配置的依賴資訊如下。
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-mapred</artifactId>
<version>0.36.4-public</version>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-commons</artifactId>
<version>0.36.4-public</version>
</dependency>
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-core</artifactId>
<version>0.36.4-public</version>
</dependency>操作流程
通過MaxCompute Studio編寫、運行調試MapReduce程式。
將編譯成功的WordCount.java指令碼打包為JAR包並上傳至MaxCompute專案中。
基於上傳至MaxCompute專案的JAR包,使用
jar命令運行MapReduce作業。
步驟一:開發MapReduce程式
建立MaxCompute Java Module。
啟動IntelliJ IDEA,在頂部功能表列,單擊。
在New Module對話方塊的左側導覽列,選擇MaxCompute Java。
配置Module SDK,單擊Next。
填寫Module name,例如mapreduce,單擊Finish。
編寫並運行調試WordCount MapReduce程式。
在Project地區,按右鍵Module的源碼目錄,選擇。
在Create new MaxCompute java class對話方塊,單擊Driver,並填寫Name,例如WordCount,按Enter鍵。

在建立的WordCount.java指令碼介面,編寫WordCount MapReduce程式,實現統計單詞個數功能。
WordCount完整程式碼範例,請參見程式碼範例。
在左側導覽列的WordCount.java指令碼上,單擊右鍵,選擇Run。
在Run/Debug Configurations對話方塊,配置MaxCompute project為目標MaxCompute專案。

單擊OK,運行並調試WordCount.java指令碼,確保指令碼編譯成功。
步驟二:產生並上傳MapReduce JAR包
在IntelliJ IDEA左側導覽列的WordCount.java指令碼上,單擊右鍵,選擇Deploy to server...。
在Package a jar and submit resource對話方塊,配置打包參數並單擊OK,完成打包及上傳操作。
步驟三:運行MapReduce作業
登入MaxCompute用戶端或在MaxCompute Studio中開啟MaxCompute用戶端。
MaxCompute Studio中整合了MaxCompute用戶端,您可以在MaxCompute Studio中直接運行MaxCompute用戶端。更多資訊,請參見整合MaxCompute用戶端。
建立輸入表和輸出表。
輸入表中的資料為MapReduce作業的來源資料,輸出表中儲存MapReduce作業對輸入表中的資料進行處理後的結果。命令樣本如下。
--建立輸入表wc_in。 create table wc_in (key STRING, value STRING); --建立輸出表wc_out。 create table wc_out (key STRING, cnt BIGINT);更多建表文法資訊,請參見建立表。
使用Tunnel Upload命令向表wc_in中插入資料。
使用
jar命令調用產生的JAR包,運行MapReduce作業。命令樣本如下。
jar -resources mapreduce-1.0-SNAPSHOT.jar -classpath mapreduce-1.0-SNAPSHOT.jar com.aliyun.odps.mapred.open.example.WordCount wc_in wc_out;-resources mapreduce-1.0-SNAPSHOT.jar:-resources指定MapReduce作業調用的資源名稱,即步驟二中上傳的JAR包mapreduce-1.0-SNAPSHOT.jar。-classpath mapreduce-1.0-SNAPSHOT.jar:-classpath指定MainClass所在JAR包的本地路徑。com.aliyun.odps.mapred.open.example.WordCount:MapReduce程式中定義的MainClass。wc_in wc_out:輸入表和輸出表。
更多
jar命令資訊,請參見文法介紹。執行如下命令查看wc_out表的寫入結果。
select * from wc_out;返回結果如下。
+------------+------------+ | key | cnt | +------------+------------+ | hello | 1 | | odps | 1 | +------------+------------+
