编程模型(MapReduce和Graph)

MapReduce编程模型

MR基础

最大优点是充分利用了闲置资源,多任务并行,快速得到答案。
拆分-处理-合并

MR框架介绍

MR处理流程

MapReduce(最早由Google提出)是一种分布式数据处理模型;核心过程主要分成2个阶段:Map阶段和Reduce阶段;首先执行Map阶段,再执行Reduce阶段。Map和Reduce阶段的处理逻辑由用户自定义实现,即实现分布式计算。

MR模型的适用场景

搜索:网页爬取、倒排索引,PageRank
Web访问日志分析:分析和挖掘用户在web上的访问、购物行为特征,实现个性化推荐;分析用户访问行为。
文本统计分析:例如小说的WordCount,词频TFIDF分析;学术论文、专利文献的饮用分析和统计;*数据分析等。
海量数据挖掘:非结构数据、时空数据、图像数据的挖掘。
机器学习:监督学习、无监督学习、分类算法如决策树、SVM等。
自然语言处理:基于大数据的训练和预测;基于语料库构建单词同现矩阵,频繁项数据挖掘、重复文档检测等。
广告推荐:用户点击(CTR)和购买行为(CVR)预测

MR框架

用户视角看原理

用户视角谈实现

扩展MR

MR开发使用流程

1、阿里云官网下载插件、配置开发环境

2、新建java项目,完成MR开发

增加mapper

增加Reducer

增加MR Driver

添加处理逻辑

3、本地测试
准备本地测试数据

本地测试

本地测试结果检查

4、导出成jar包,并作为资源上传到ODPS的项目空间

add jar wcMR.jar -f;

MR打包成jar包

5、使用jar命令调用MR(命令示例如下)

jar -resources wcMR.jar -classpath wcMR.jar -classpath wcMR.jar example.wcDriver wc_in wc_out;

6、检查运行结果
7、开发发布完成。
发布

例子:WordCount

MR的开发说明:
1、支持MaxCompute内置类型的bigint,double,string,datetime及Boolean类型,不支持自定义类型。
2、接受多表输入,且输入表的schema可以不同。在map函数中,可以获取当前record对应的table信息。
3、输入可以为空,不支持视图(View)作为输入。
4、Reduce接受多路输出,可以输出到不同表,或者同一张表的不同分区。不同输出的schema可以不同。不同输出间通过label进行区分,默认输出不必加lable,目前不接受没有输出的情况。

MR编程模型-SDK核心接口

MaxCompute MR执行流程

核心接口

MapperBase:映射操作

JobConf:MR任务配置信息

MR使用注意事项

Graph编程模型

Graph概述

Graph的数据结构

Graph的处理流程

Graph的处理伪代码

Graph SDK介绍

Graph的Aggregator机制

Graph的作业运行

Graph开发使用流程

Dijkstra算法

配置java—+eclapse等跟mapreduce步骤都类似

JAVA沙箱限制

上一篇:【转载保存】Ubuntu14.04安装pycharm用于Python开发环境部署,并且支持pycharm使用中文输入


下一篇:用户定义函数UDF