403
windows
MapOnly示例__示例程序_MapReduce_大數據計算服務-阿裏雲
對於MapOnly的作業,Map直接將 < Key, Value > 信息輸出到ODPS的表中。用戶隻需要指定輸出表即可,不再需要指定Map輸出的Key/Value元信息。
測試準備
(1)準備好測試程序jar包,假設名字為mapreduce-examples.jar;
(2)準備好MapOnly測試表和資源;
創建表
create table wc_in (key string, value string); create table wc_out(key string, cnt bigint);
添加資源
add jar mapreduce-examples.jar -f;
(3)使用tunnel導入數據;
tunnel upload data wc_in;
- 導入wc_in表的數據文件data內容為:
hello,odps
hello,odps
測試步驟
在odpscmd中執行MapOnly
jar -resources mapreduce-examples.jar -classpath mapreduce-examples.jar
com.aliyun.odps.mapred.open.example.MapOnly wc_in wc_out map
預期結果
作業成功結束。 輸出表wc_out中內容為:
+------------+------------+
| key | cnt |
+------------+------------+
| hello | 1 |
| hello | 1 |
+------------+------------+
代碼示例
package com.aliyun.odps.mapred.open.example;
import java.io.IOException;
import com.aliyun.odps.data.Record;
import com.aliyun.odps.mapred.JobClient;
import com.aliyun.odps.mapred.MapperBase;
import com.aliyun.odps.mapred.conf.JobConf;
import com.aliyun.odps.mapred.utils.SchemaUtils;
import com.aliyun.odps.mapred.utils.InputUtils;
import com.aliyun.odps.mapred.utils.OutputUtils;
import com.aliyun.odps.data.TableInfo;
public class MapOnly {
public static class MapperClass extends MapperBase {
@Override
public void setup(TaskContext context) throws IOException {
boolean is = context.getJobConf().getBoolean("option.mapper.setup", false);
if (is) {
Record result = context.createOutputRecord();
result.set(0, "setup");
result.set(1, 1L);
context.write(result);
}
}
@Override
public void map(long key, Record record, TaskContext context) throws IOException {
boolean is = context.getJobConf().getBoolean("option.mapper.map", false);
if (is) {
Record result = context.createOutputRecord();
result.set(0, record.get(0));
result.set(1, 1L);
context.write(result);
}
}
@Override
public void cleanup(TaskContext context) throws IOException {
boolean is = context.getJobConf().getBoolean("option.mapper.cleanup", false);
if (is) {
Record result = context.createOutputRecord();
result.set(0, "cleanup");
result.set(1, 1L);
context.write(result);
}
}
}
public static void main(String[] args) throws Exception {
if (args.length != 2 && args.length != 3) {
System.err.println("Usage: OnlyMapper <in_table> <out_table> [setup|map|cleanup]");
System.exit(2);
}
JobConf job = new JobConf();
job.setMapperClass(MapperClass.class);
job.setNumReduceTasks(0);
InputUtils.addTable(TableInfo.builder().tableName(args[0]).build(), job);
OutputUtils.addTable(TableInfo.builder().tableName(args[1]).build(), job);
if (args.length == 3) {
String options = new String(args[2]);
if (options.contains("setup")) {
job.setBoolean("option.mapper.setup", true);
}
if (options.contains("map")) {
job.setBoolean("option.mapper.map", true);
}
if (options.contains("cleanup")) {
job.setBoolean("option.mapper.cleanup", true);
}
}
JobClient.runJob(job);
}
}
最後更新:2016-05-06 10:43:08
上一篇:
WordCount示例__示例程序_MapReduce_大數據計算服務-阿裏雲
下一篇:
多路輸入輸出示例__示例程序_MapReduce_大數據計算服務-阿裏雲
步驟 3:登錄Linux實例__快速入門(Linux)_雲服務器 ECS-阿裏雲
阿裏雲全球化邁入2.0階段,或將助推阿裏取得更大突破
編寫UDF__快速開始_大數據計算服務-阿裏雲
索引切割__圖片裁剪_圖片處理指南_對象存儲 OSS-阿裏雲
AutoSnapshotExecutionStatusType__數據類型_API 參考_雲服務器 ECS-阿裏雲
軟件配置__用戶指南_E-MapReduce-阿裏雲
RetryShipperTask__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
調用示例__調用方式_API使用手冊_視頻點播-阿裏雲
步驟1:配置四層轉發__快速入門(非網站業務)_DDoS 高防IP-阿裏雲
輕雲主機和虛擬主機web上傳文件大小限製___安全問題_技術分享_雲虛機主機-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲