大数据计算服务(MaxCompute,原名ODPS)是一种快速、完全托管的TB/PB级数据仓库解决方案。MaxCompute向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。
从2009年9月阿里云成立,愿景就是做运算/分享数据的第一平台。2010年4月,伴随阿里金融的贷款业务上线,ODPS正式投入生产运行。2012年建立统一数据平台,2013年具备超大规模海量数据处理能力,2014~2015年大数据平台开始日趋成熟,2016年MaxCompute2.0诞生,成立之初的愿景正在逐步实现。
时间 | 动态 |
---|---|
2010.04 | ODPS正式投入生产运行,阿里金融的贷款业务上线稳定运行。 |
2013.05 | ODPS公测。 |
2013.07 | ODPS正式提供商业化服务,单集群规模5K台服务器多级群能力。 |
2016.09 | ODPS正式更名为MaxCompute,并推出MaxCompute2.0,实现高性能,新功能,富生态。 |
MaxCompute(原ODPS)是一种大数据计算服务,能提供快速、完全托管的PB级数据仓库解决方案,已经与阿里云部分产品集成,快速实现多种业务场景。
DataWorks是基于MaxCompute计算和存储,提供工作流可视化开发、调度运维托管的一站式海量数据离线加工分析平台。在数加(一站式大数据平台)中,DataWorks控制台即为MaxCompute控制台。
通过DataWorks,您既可直接编写并运行MaxCompute SQL,又能可视化配置工作流并定时调度运行MaxCompute SQL、MR等任务。更多使用说明请参见DataWorks帮助文档。
说明 您可以将DataWorks理解成MaxCompute的web客户端。
MaxCompute可以通过数据集成加载不同数据源数据,同样也可以通过数据集成把MaxCompute的数据导出到各种业务数据库。
数据集成已经集成到DataWorks作为数据同步任务进行配置、运行。您可直接在DataWorks上配置MaxCompute数据源,再配置读取MaxCompute表或者写入MaxCompute表任务,整个过程只需在一个平台上进行操作。
机器学习是基于MaxCompute的一款机器学习算法平台。数加上创建好MaxCompute项目,开通好机器学习,即可通过机器学习平台的算法组件对MaxCompute数据进行模型训练等操作。详情请参见机器学习操作文档。
数据在MaxCompute进行加工处理后,将Project添加为QuickBI数据源,即可在QuickBI页面对MaxCompute表数据进行报表制作,实现数据可视化分析。
AnalyticDB是海量数据实时高并发在线分析(Realtime OLAP)的云计算服务,与MaxCompute双剑合璧实现大数据驱动业务系统的场景。通过MaxCompute离线计算挖掘,产出高质量数据后,导入分析型数据库,供业务系统调用分析。
将MaxCompute数据导入到AnalyticDB,有以下两种方式:
推荐引擎是在阿里云计算环境下建立的一套推荐服务框架,推荐服务通常由三部分组成:日志采集、推荐计算和产品对接,而推荐计算的离线计算输入和输出都是MaxCompute(原ODPS)表。
在推荐引擎控制台的资源管理页面,通过添加云计算资源的方式,将MaxCompute项目添加为推荐引擎的计算资源。
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,MaxCompute2.0支持直接通过外部表方式访问表格存储中的表数据并进行处理,详情请参见访问OTS非结构化数据。
对象存储OSS是海量、安全、低成本、高可靠的云存储服务,MaxCompute2.0支持直接通过外部表方式访问表格存储中的表数据并进行处理,详情请参见访问OSS非结构化数据。
阿里云开放搜索OpenSearch是一款阿里巴巴自主研发的大规模分布式搜索引擎平台。数据通过MaxCompoute进行计算处理后,可以在OpenSearch平台上通过添加数据源的方式将MaxCompute数据接入。
移动数据分析(Mobile Analytics)是阿里云推出的一款移动APP数据统计分析产品,为开发者提供一站式数据化运营服务。当移动数据分析自带的基础的分析报表不能满足APP开发者的个性化需求时,可以将数据一键同步至Maxcompute,结合自己的业务需求来进一步加工、分析自己的数据。
日志服务能快速完成数据采集、消费、投递以及查询分析等功能。日志数据采集后,需要更多的个性化分析、挖掘,您可以在日志服务上投递日志到MaxCompute,通过MaxCompute对日志数据进行个性化、深层次的数据分析、挖掘。
RAM是阿里云为客户提供的 用户身份管理与 资源访问控制服务。MaxCompute与RAM的集成使用主要有两个场景:
主帐号开通并创建项目后,若需要通过DataWorks使用MaxCompute且多个账户协同开发,必须由主帐号到RAM服务中创建子账户,将RAM子账户添加为项目成员从而进行协同开发,详情请参见准备RAM子账号、添加工作空间成员和角色。
说明 此时RAM只起到用户身份管理功能,相关的权限管理不在RAM上控制。
目前MaxCompute支持直接处理非结构化数据(包含OSS和Table Store),前提条件之一就是需要在RAM中授予MaxCompute访问OSS或Table Store的权限,详情请参见访问OSS非结构化数据、访问OTS非结构化数据。
使用MaxCompute服务前,您需要准备一个阿里云账号。
说明 主账号创建成功后,作为阿里云系统识别的资源消费账号,会拥有该账户的所有权限。 请您尽可能保证账号和密码的安全,切勿借给他人使用,定期更新密码。
阿里云账号需要进行实名制认证后,才能购买和使用阿里云上的各种产品。如果您还没有实名认证,请进入实名认证页面对账号进行实名认证。为保证后续操作顺利进行,请务必完成实名认证操作。
对于企业级用户,最好可以进行企业级认证,以获取更多的便利。更多详情请参见会员账号&实名制认证。
为了保证您在DataWorks中的任务顺利运行,需要为您创建一个运行密钥。该密钥区别于您登录时填写的账号和密码,主要用于在阿里云各产品间互相认证使用权限。运行密钥AK包括Access Key ID和Access Key Secret两部分。具体操作如下:
说明 账号的accesskeys非常重要,创建成功后,请您尽可能保证Access Key ID和Access Key Secret的安全,切勿让他人知晓,一旦有泄漏的风险,请及时禁用和更新。
如果您需要使用RAM子账号登录数加平台和使用DataWorks,可使用主账号创建RAM子账号。
如果您是第一次使用数加产品和DataWorks,请使用阿里云账号登录;如果您需要使用RAM子账号登录和创建项目,请根据准备阿里云账号检查账号是否已可用并授权。如果验证无误,请根据下述操作开通MaxCompute服务。
您可根据自身需求进行选择、购买,MaxCompute有按CU预付费和按I/O后付费(按量付费)两种付费方式,详情请参见计量计费说明中的计算计费模块。
如果您选择了 按量付费模式,则可以继续选择规格类型为 标准版或 开发者版。说明关于区域的选择,您需要考虑的最主要因素是MaxCompute与其他阿里云产品之间的关系,如ECS在什么区域,数据在什么区域。
开通MaxCompute服务后,您可进行项目的创建,详情请参见创建项目。
选择计算引擎服务:
选择DataWorks服务:
基本配置:
高级配置:
您可以通过客户端(odpscmd)访问MaxCompute的项目空间并使用各项功能。本文为您介绍如何安装、配置、运行客户端。
客户端(odpscmd)的具体使用方法请参见客户端介绍。说明
说明 由于客户端(odpscmd)基于Java开发。在安装前,请确保您的机器上有JRE 1.7或以上版本(建议优先使用JRE 1.7/1.8,其中JRE 1.9已经支持,JRE 1.10暂不支持)。
说明 您可以在这里下载到各版本的客户端(odpscmd)工具。
试用
bin/ conf/ lib/ plugins/
编辑conf文件夹中的odps_config.ini文件,对客户端进行配置,如下所示:
试用
access_id=*******************
access_key=*********************
# Accesss ID及Access Key是用户的云账号信息,可登录阿里云官网,进入管理控制台accesskeys页面进行查看。
project_name=my_project # 指定用户想进入的项目空间。
end_point=https://service.odps.aliyun.com/api # MaxCompute服务的访问链接
tunnel_endpoint=https://dt.odps.aliyun.com # MaxCompute Tunnel服务的访问链接
log_view_host=http://logview.odps.aliyun.com
# 当用户执行一个作业后,客户端会返回该作业的LogView地址。打开该地址将会看到作业执行的详细信息。
https_check=true #决定是否开启HTTPS访问
说明
修改好配置文件后,便可运行bin目录下的MaxCompute(Linux系统下运行./bin/odpscmd,Windows下运行./bin/odpscmd.bat),示例如下:
试用
create table tbl1(id bigint);
insert overwrite table tbl1 select count(*) from tbl1;
select 'welcome to MaxCompute!' from tbl1;
更多SQL语句的介绍请参见SQL概述。
当用户申请创建项目空间后,该用户即是此空间的所有者(Owner),这个项目空间内的所有对象(表,实例,资源,UDF等)都属于该用户。这就是说,除了Owner之外,任何人都无权访问此项目空间内的对象,除非有Owner的授权许可。本文同时为您提供MaxCompute和Dataworks中,主账号与子账号的权限区分表。
项目空间(Project)是MaxCompute实现多租户体系的基础,是您管理数据和计算的基本单位,也是计量和计费的主体。说明 对于已在MaxCompute或DateWorks项目中拥有角色的RAM子账号,请在删除子账号之前解除子账号在项目的角色并在项目空间中删除子账号。否则子账号会在项目空间中残留,显示为“ p4_ xxxxxxxxxxxxxxxxxxxx”且无法在项目空间中移除(不影响项目空间正常功能使用)。示例如下:
试用
子账号残留时在项目的显示:
odps@ MaxCompute>list users;
p4_2652900xxxxxxxxxx
残留子账号无法在空间中删除:
odps@ MaxCompute_DOC>remove user p4_2652900xxxxxxxxxx;
Confirm to "remove user p4_2652900xxxxxxxxxx
;" (yes/no)? yes
FAILED: lack of account provider
在此时在Dataworks项目成员管理页面依然能看到RAM子账号。
正确的做法:在删除子账号前先解除子账号的角色
odps@ MaxCompute>revoke role_project_security, role_project_admin, role_project_dev, role_project_pe, role_project_deploy, role_project_guest from RAM$MainCount:hanmeimei;
OK
然后在空间移除子账号:
odps@ MaxCompute>remove user RAM$MainCount:hanmeimei;
之后即可正常删除RAM子账号。
在MaxCompute和Dataworks中,主账号与子账号的权限区分如下表所示。
操作类型 | 操作说明 | 操作端 | 主账号 | 角色 | RAM子账号 | 角色 | 依赖 |
Project管理 | Project-创建、删除 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员 | 主账号AK开启 |
Project-创建、删除 | MaxCompute CLI/Studio | 不支持 | N/A | 不支持 | N/A | ||
Project-跨Project访问 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | ALL | 主账号指定授权 | |
Project-更新 | Dataworks/MaxCompute CLI/Studio | 不支持 | N/A | 不支持 | N/A | ||
IP白名单设置 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 不支持 | N/A | 主账号AK开启 | |
全表扫描 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 不支持 | N/A | 主账号AK开启 | |
数据保护 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 不支持 | N/A | 主账号AK开启 | |
项目成员-添加、授权管理 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员 | 主账号AK开启 | |
项目成员-添加、授权管理 | MaxCompute CLI/Studio | 不支持 | N/A | 不支持 | N/A | ||
数据集成 | 数据源创建、修改 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员 | |
同步任务创建、修改 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
同步任务发布 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员、开发、运维、部署 | ||
CU管家 | CU管家-修改Quota | Dataworks | 支持 | 项目所有者 | 不支持 | N/A | 主账号AK开启 |
CU管家-访问、监控 | Dataworks | 支持 | 项目所有者 | 支持 | ALL | ||
CU管家-RAM授权 | Dataworks | 不支持 | N/A | 不支持 | N/A | ||
代码开发 | 查看代码列表、内容 | Dataworks | 支持 | 项目所有者 | 支持 | ALL | |
代码创建、删除、更新、运行 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
JAVA UDF | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发、运维、部署 | ||
Python UDF | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发、运维、部署 | 工单申请开通 | |
运维中心 | 调度任务查看管理 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员、开发、运维、部署 | |
数据管理 | 表-创建 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | |
表-更新 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发、运维、部署 | ||
表-删除 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
单表授权(ACL) | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
表查询-元数据预览 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | ALL | ||
表查询-跨Project表预览 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | ALL | 主账号指定授权 | |
资源管理 | 查看资源列表 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | ALL | |
资源-创建、删除 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
资源-上传(jar/text/archive) | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
工作流开发 | 查看工作流列表、内容 | Dataworks | 支持 | 项目所有者 | 支持 | ALL | |
工作流创建、删除、更新 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
文件夹创建、删除、更新 | Dataworks | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
函数开发 | 查看函数列表、详情 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | ALL | |
函数-创建、删除 | Dataworks/MaxCompute CLI/Studio | 支持 | 项目所有者 | 支持 | 项目管理员、开发 | ||
售卖 | 购买、充值、续费、升级、降配 | 数加控制台/MaxCompute购买页 | 支持 | 项目所有者 | 不支持 | N/A | |
消费账单、消费明细、使用记录 | 阿里云费用中心 | 支持 | 项目所有者 | 不支持 | N/A |
本文将为您介绍MaxCompute Region的开通情况和连接方式,解答您在与其他云产品(ECS、TableStore、OSS)互访场景中遇到的网络连通性和下载数据收费等问题。
由上图可知,从服务层面来看,MaxCompute为您提供了两大类服务连接地址,如下所示:
从阿里云各Region部署及网络情况来看,通常情况下分为三种连接方式,如下所示:
说明 创建MaxCompute的项目时无需指定网络,只在连接项目时才需指定通过什么网络进行连接。
数据上传
Tunnel数据上传无论走哪一种网络形态都免费,如上文示意图所示。
数据下载
您无论是在ECS云服务器的哪一个Region上进行Tunnel服务请求进行下载数据,网络连通性设置都需满足如下形态定义。
说明 此时必须配置经典网络/VPC类型的Tunnel Endpoint ,否则数据会路由到外网进行跨Region下载,产生费用。
说明 由于阿里云数据中心各个Region部署和网络情况不一致,若您选择通过阿里云经典网络/VPC网络进行跨Region的访问,则MaxCompute产品方不承诺、不保证其永久连通性。
MaxCompute2.0支持读写OSS对象存储数据,同时也支持读写TableStore表格存储数据,详情请参见访问OSS非结构化数据和访问OTS非结构化数据。
网络连通性的配置说明,如下所示:
从Region部署情况来看,MaxCompute目前国内国外陆续开服,您可以申请使用对应区域的MaxCompute,您的数据存储和计算消耗均发生在开通使用的区域。
说明 公网Endpoint域名(aliyun)支持http和https,若需要请求加密,请用https。内网Endpoint域名(aliyun-inc)仅支持http,不支持https访问。
Region名称 | 所在城市 | 开服状态 | 外网Endpoint | 外网Tunnel Endpoint |
---|---|---|---|---|
华东1 | 杭州 | 已开服 | http://service.cn.maxcompute.aliyun.com/api | http://dt.cn-hangzhou.maxcompute.aliyun.com |
华东2 | 上海 | 已开服 | http://service.cn.maxcompute.aliyun.com/api | http://dt.cn-shanghai.maxcompute.aliyun.com |
华北2 | 北京 | 已开服 | http://service.cn.maxcompute.aliyun.com/api | http://dt.cn-beijing.maxcompute.aliyun.com |
华北2政务云 | 北京 | 已开服 | http://service.cn-north-2-gov-1.maxcompute.aliyun.com/api | http://dt.cn-north-2-gov-1.maxcompute.aliyun.com |
华南1 | 深圳 | 已开服 | http://service.cn.maxcompute.aliyun.com/api | http://dt.cn-shenzhen.maxcompute.aliyun.com |
香港 | 香港 | 已开服 | http://service.cn-hongkong.maxcompute.aliyun.com/api | http://dt.cn-hongkong.maxcompute.aliyun.com |
亚太东南1 | 新加坡 | 已开服 | http://service.ap-southeast-1.maxcompute.aliyun.com/api | http://dt.ap-southeast-1.maxcompute.aliyun.com |
亚太东南2 | 悉尼 | 已开服 | http://service.ap-southeast-2.maxcompute.aliyun.com/api | http://dt.ap-southeast-2.maxcompute.aliyun.com |
亚太东南3 | 吉隆坡 | 已开服 | http://service.ap-southeast-3.maxcompute.aliyun.com/api | http://dt.ap-southeast-3.maxcompute.aliyun.com |
亚太东南5 | 雅加达 | 已开服 | http://service.ap-southeast-5.maxcompute.aliyun.com/api | http://dt.ap-southeast-5.maxcompute.aliyun.com |
亚太东北1 | 东京 | 已开服 | http://service.ap-northeast-1.maxcompute.aliyun.com/api | http://dt.ap-northeast-1.maxcompute.aliyun.com |
欧洲中部1 | 法兰克福 | 已开服 | http://service.eu-central-1.maxcompute.aliyun.com/api | http://dt.eu-central-1.maxcompute.aliyun.com |
美国西部1 | 硅谷 | 已开服 | http://service.us-west-1.maxcompute.aliyun.com/api | http://dt.us-west-1.maxcompute.aliyun.com |
美国东部1 | 弗吉尼亚 | 已开服 | http://service.us-east-1.maxcompute.aliyun.com/api | http://dt.us-east-1.maxcompute.aliyun.com |
亚太南部1 | 孟买 | 已开服 | http://service.ap-south-1.maxcompute.aliyun.com/api | http://dt.ap-south-1.maxcompute.aliyun.com |
中东东部1 | 迪拜 | 已开服 | http://service.me-east-1.maxcompute.aliyun.com/api | http://dt.me-east-1.maxcompute.aliyun.com |
英国 | 伦敦 | 已开服 | http://service.eu-west-1.maxcompute.aliyun.com/api | http://dt.eu-west-1.maxcompute.aliyun.com |
Region名称 | 所在城市 | 开服状态 | 经典网络Endpoint | 经典网络Tunnel Endpoint |
---|---|---|---|---|
华东1 | 杭州 | 已开服 | http://service.cn.maxcompute.aliyun-inc.com/api | http://dt.cn-hangzhou.maxcompute.aliyun-inc.com |
华东2 | 上海 | 已开服 | http://service.cn.maxcompute.aliyun-inc.com/api | http://dt.cn-shanghai.maxcompute.aliyun-inc.com |
华北2 | 北京 | 已开服 | http://service.cn.maxcompute.aliyun-inc.com/api | http://dt.cn-beijing.maxcompute.aliyun-inc.com |
华北2政务云 | 北京 | 已开服 | http://service.cn-north-2-gov-1-all.maxcompute.aliyun-inc.com/api | http://dt.cn-north-2-gov-1-all.maxcompute.aliyun-inc.com |
华南1 | 深圳 | 已开服 | http://service.cn.maxcompute.aliyun-inc.com/api | http://dt.cn-shenzhen.maxcompute.aliyun-inc.com |
香港 | 香港 | 已开服 | http://service.cn-hongkong.maxcompute.aliyun-inc.com/api | http://dt.cn-hongkong.maxcompute.aliyun-inc.com |
亚太东南1 | 新加坡 | 已开服 | http://service.ap-southeast-1.maxcompute.aliyun-inc.com/api | http://dt.ap-southeast-1.maxcompute.aliyun-inc.com |
亚太东南2 | 悉尼 | 已开服 | http://service.ap-southeast-2.maxcompute.aliyun-inc.com/api | http://dt.ap-southeast-2.maxcompute.aliyun-inc.com |
亚太东南3 | 吉隆坡 | 已开服 | http://service.ap-southeast-3.maxcompute.aliyun-inc.com/api | http://dt.ap-southeast-3.maxcompute.aliyun-inc.com |
亚太东南5 | 雅加达 | 已开服 | http://service.ap-southeast-5.maxcompute.aliyun-inc.com/api | http://dt.ap-southeast-5.maxcompute.aliyun-inc.com |
亚太东北1 | 东京 | 已开服 | http://service.ap-northeast-1.maxcompute.aliyun-inc.com/api | http://dt.ap-northeast-1.maxcompute.aliyun-inc.com |
欧洲中部1 | 法兰克福 | 已开服 | http://service.eu-central-1.maxcompute.aliyun-inc.com/api | http://dt.eu-central-1.maxcompute.aliyun-inc.com |
美国西部1 | 硅谷 | 已开服 | http://service.us-west-1.maxcompute.aliyun-inc.com/api | http://dt.us-west-1.maxcompute.aliyun-inc.com |
美国东部1 | 弗吉尼亚 | 已开服 | http://service.us-east-1.maxcompute.aliyun-inc.com/api | http://dt.us-east-1.maxcompute.aliyun-inc.com |
亚太南部1 | 孟买 | 已开服 | http://service.ap-south-1.maxcompute.aliyun-inc.com/api | http://dt.ap-south-1.maxcompute.aliyun-inc.com |
中东东部1 | 迪拜 | 已开服 | http://service.me-east-1.maxcompute.aliyun-inc.com/api | http://dt.me-east-1.maxcompute.aliyun-inc.com |
英国 | 伦敦 | 已开服 | http://service.uk-all.maxcompute.aliyun-inc.com/api | http://dt.uk-all.maxcompute.aliyun-inc.com |
Region名称 | 所在城市 | 开服状态 | VPC网络Endpoint | VPC网络Tunnel Endpoint |
---|---|---|---|---|
华东1 | 杭州 | 已开服 | http://service.cn.maxcompute.aliyun-inc.com/api | http://dt.cn-hangzhou.maxcompute.aliyun-inc.com |
华东2 | 上海 | 已开服 | http://service.cn.maxcompute.aliyun-inc.com/api | http://dt.cn-shanghai.maxcompute.aliyun-inc.com |
华北2 | 北京 | 已开服 | http://service.cn.maxcompute.aliyun-inc.com/api | http://dt.cn-beijing.maxcompute.aliyun-inc.com |
华北2政务云 | 北京 | 已开服 | http://service.cn-north-2-gov-1-all.maxcompute.aliyun-inc.com/api | http://dt.cn-north-2-gov-1-all.maxcompute.aliyun-inc.com |
华南1 | 深圳 | 已开服 | http://service.cn.maxcompute.aliyun-inc.com/api | http://dt.cn-shenzhen.maxcompute.aliyun-inc.com |
香港 | 香港 | 已开服 | http://service.cn-hongkong.maxcompute.aliyun-inc.com/api | http://dt.cn-hongkong.maxcompute.aliyun-inc.com |
亚太东南1 | 新加坡 | 已开服 | http://service.ap-southeast-1.maxcompute.aliyun-inc.com/api | http://dt.ap-southeast-1.maxcompute.aliyun-inc.com |
亚太东南2 | 悉尼 | 已开服 | http://service.ap-southeast-2.maxcompute.aliyun-inc.com/api | http://dt.ap-southeast-2.maxcompute.aliyun-inc.com |
亚太东南3 | 吉隆坡 | 已开服 | http://service.ap-southeast-3.maxcompute.aliyun-inc.com/api | http://dt.ap-southeast-3.maxcompute.aliyun-inc.com |
亚太东南5 | 雅加达 | 已开服 | http://service.ap-southeast-5.maxcompute.aliyun-inc.com/api | http://dt.ap-southeast-5.maxcompute.aliyun-inc.com |
亚太东北1 | 东京 | 已开服 | http://service.ap-northeast-1.maxcompute.aliyun-inc.com/api | http://dt.ap-northeast-1.maxcompute.aliyun-inc.com |
欧洲中部1 | 法兰克福 | 已开服 | http://service.eu-central-1.maxcompute.aliyun-inc.com/api | http://dt.eu-central-1.maxcompute.aliyun-inc.com |
美国西部1 | 硅谷 | 已开服 | http://service.us-west-1.maxcompute.aliyun-inc.com/api | http://dt.us-west-1.maxcompute.aliyun-inc.com |
美国东部1 | 弗吉尼亚 | 已开服 | http://service.us-east-1.maxcompute.aliyun-inc.com/api | http://dt.us-east-1.maxcompute.aliyun-inc.com |
亚太南部1 | 孟买 | 已开服 | http://service.ap-south-1.maxcompute.aliyun-inc.com/api | http://dt.ap-south-1.maxcompute.aliyun-inc.com |
中东东部1 | 迪拜 | 已开服 | http://service.me-east-1.maxcompute.aliyun-inc.com/api | http://dt.me-east-1.maxcompute.aliyun-inc.com |
英国 | 伦敦 | 已开服 | http://service.uk-all.maxcompute.aliyun-inc.com/api | http://dt.uk-all.maxcompute.aliyun-inc.com |
说明 需要配置Endpoint、Tunnel Endpoint的场景:
当您完成阿里云账号开通、MaxCompute项目购买,被添加到项目空间并被赋予建表等权限,在本地完成客户端的配置后即可操作MaxCompute。本文将为您演示一个完整的使用MaxCompute进行银行贷款购房人员分析的过程,您可以参考每个步骤的示例部分进行实际操作。
说明 如果您是第一次使用MaxCompute,在您快速入门之前,请务必完成所有的准备工作。
快速入门系列文档后续将着重介绍使用客户端配合MaxCompute Studio完成表的创建、数据的上传、加工及导出。您也可以使用DataWorks完成上述整个过程,详情参见DataWorks快速入门。
由于在MaxCompute中的操作对象(输入、输出)都是表,所以在处理数据之前,首先要创建表、分区。创建、查看或删除表的方式有以下几种,本文将为您介绍如何使用 客户端创建、查看表:
登录客户端之后,使用如下建表语句创建表。
试用
CREATE TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[LIFECYCLE days]
[AS select_statement]
CREATE TABLE [IF NOT EXISTS] table_name
LIKE existing_table_name
说明 创建表的详细介绍请参见表操作。
登录MaxCompute客户端后,首先您需要确认当前是否在正确的项目中,本例中项目名称为MaxCompute_DOC,您可以使用 use MaxCompute_DOC;
命令切换到该项目(项目需要您提前创建)。
本文中,表bank_data用于存储业务数据,表result_table用于存储数据分析后产生的结果。
bank_data建表语句如下所示:
试用
CREATE TABLE IF NOT EXISTS bank_data
(
age BIGINT COMMENT '年龄',
job STRING COMMENT '工作类型',
marital STRING COMMENT '婚否',
education STRING COMMENT '教育程度',
default STRING COMMENT '是否有信用卡',
housing STRING COMMENT '房贷',
loan STRING COMMENT '贷款',
contact STRING COMMENT '联系途径',
month STRING COMMENT '月份',
day_of_week STRING COMMENT '星期几',
duration STRING COMMENT '持续时间',
campaign BIGINT COMMENT '本次活动联系的次数',
pdays DOUBLE COMMENT '与上一次联系的时间间隔',
previous DOUBLE COMMENT '之前与客户联系的次数',
poutcome STRING COMMENT '之前市场活动的结果',
emp_var_rate DOUBLE COMMENT '就业变化速率',
cons_price_idx DOUBLE COMMENT '消费者物价指数',
cons_conf_idx DOUBLE COMMENT '消费者信心指数',
euribor3m DOUBLE COMMENT '欧元存款利率',
nr_employed DOUBLE COMMENT '职工人数',
y BIGINT COMMENT '是否有定期存款'
);
直接运行上述建表语句即可,成功后您会看到 OK字样。
result_table建表语句如下所示:
试用
CREATE TABLE IF NOT EXISTS result_table
(
education STRING COMMENT '教育程度',
num BIGINT COMMENT '人数'
);
当创建表成功之后,您可以通过desc
命令查看表的信息。
您可执行命令desc bank_data;
查看上述示例中bank_data表的信息。
查看表信息的更多详情请参见表操作。
本例中使用的是非分区表。
如果您创建的是分区表,为了往该表里使用Tunnel命令导入不同分区数据,您首先需要创建分区。命令如下:
试用
alter table table_name add [if not exists] partition(partition_col1 = partition_col_value1, partition_col2 = partiton_col_value2, ...);
其他操作例如使用数据集成、insert等无需单独创建分区。
删除分区的命令如下所示:
试用
alter table table_name drop [if exists] partition(partition_col1 = partition_col_value1, partition_col2 = partiton_col_value2, ...);
例如删除区域为hangzhou,日期为20180923的分区,语句如下所示:
试用
alter table user drop if exists partition(region='hangzhou',dt='20180923');
删除表的命令如下所示:
试用
DROP TABLE [IF EXISTS] table_name;
更多详情请参见表操作。
在您完成表格的创建后,就可以使用Tunnel命令导入数据到MaxCompute了。
MaxCompute提供多种数据导入导出方式,本文主要介绍在客户端上使用Tunnel命令操作进行数据导入。
试用
44,blue-collar,married,basic.4y,unknown,yes,no,cellular,aug,thu,210,1,999,0,nonexistent,1.4,93.444,-36.1,4.963,5228.1,0
53,technician,married,unknown,no,no,no,cellular,nov,fri,138,1,999,0,nonexistent,-0.1,93.2,-42,4.021,5195.8,0
28,management,single,university.degree,no,yes,no,cellular,jun,thu,339,3,6,2,success,-1.7,94.055,-39.8,0.729,4991.6,1
本文中,bank.txt本地存放路径为D:\。
您需要把上面的数据导入到MaxCompute的一张表中,所以需要创建MaxCompute表,如果您已完成步骤一创建bank_data表,可跳过本步骤。
试用
tunnel upload D:\banking.txt bank_data;
当出现下图中 OK字样,说明上传成功。select count(*) from bank_data;
查看表bank_data的记录数,验证是否完成所有数据上传,本文中共有41188条数据。除了通过客户端导入数据,您也可以使用MaxCompute Studio、Tunnel SDK、数据集成、开源的Sqoop、Fluentd、Flume、LogStash 等工具都可以进行数据导入到MaxCompute,详情请参见数据上传下载-工具介绍。
在您的数据导入到MaxCompute后,即可在MaxCompute上运行SQL来处理数据。
您可以选择在MaxCompute客户端或DataWorks上运行SQL语句,本文为您演示如何使用客户端完成SQL查询、写入等过程。
MaxCompute当前支持的SQL语法:
说明
用SQL代码查询不同学历的单身人士贷款买房的数量,并将结果保存下到result_table以便分析或展现。
试用
INSERT OVERWRITE TABLE result_table --数据插入到result_table中
SELECT education,COUNT(marital) AS num
FROM bank_data
WHERE housing = 'yes'
AND marital = 'single'
GROUP BY education;
您可以使用 select * from result_table;
查看result_table表中的数据,如下图所示,可以看到当前受到各阶段教育的单身人士数量。
上述过程仅仅是一个最简单的数据加工举例,您在实际应用的过程中,可能需要使用多个SQL对多个表进行加工操作。推荐您使用DataWorks完成复杂的数据加工业务流程。
您在完成SQL语句处理后,可以参考Tunnel命令操作将处理完的数据导出到本地。本例中,将result_table中数据导出到本地D盘。
试用
tunnel download result_table D:\result.txt;
导出成功后如下图所示,可以看到 download OK字样。
说明 如果您需要将数据导出到MySQL或其他数据源,推荐您使用数据集成。
本文将为您介绍安装好MaxCompute客户端后,如何快速编写和运行MapReduce WordCount示例程序。
说明 如果您使用Maven,可以从Maven 库中搜索odps-sdk-mapred获取不同版本的Java SDK。相关配置信息如下所示:
试用
com.aliyun.odps
odps-sdk-mapred
0.26.2-public
试用
CREATE TABLE wc_in (key STRING, value STRING);
CREATE TABLE wc_out (key STRING, cnt BIGINT);
-- 创建输入、输出表
更多创建表的语句请参见创建表。
试用
tunnel upload kv.txt wc_in
-- 上传示例数据
kv.txt文件中的数据如下所示: 试用
238,val_238
186,val_86
186,val_86
试用
insert into table wc_in select '238',' val_238' from (select count(*) from wc_in) a;
MaxCompute为您提供了便捷的Eclipse开发插件,方便您快速开发MapReduce程序,并提供了本地调试MapReduce的功能。您也可以使用MaxCompute Studio进行MapReduce程序开发,本文以Eclipse举例。
您需要先在Eclipse中创建一个项目工程,而后在此工程中编写MapReduce程序。本地调试通过后,将编译好的程序(Jar 包,如Word-count-1.0.jar)导出并上传至MaxCompute。详情请参见MapReduce开发插件介绍。
试用
add jar word-count-1.0.jar;
试用
jar -resources word-count-1.0.jar -classpath /home/resources/word-count-1.0.jar com.taobao.jingfan.WordCount wc_in wc_out;
试用
select * from wc_out;
说明 如果您在 Java 程序中使用了任何资源,请务必将此资源加入 -resources参数。Jar命令的详细介绍请参见作业提交 。
MaxCompute的UDF包括UDF、UDAF和UDTF三种函数。通常情况下,这三种函数被统称为UDF。
说明 当前MaxCompute已支持JAVA UDF、Python UDF、UDJ、UDT,详细信息可参见JAVA UDF。
实现JAVA UDF使用Maven的用户可以从Maven库中搜索 odps-sdk-udf获取不同版本的Java SDK,相关配置信息举例如下所示:
试用
com.aliyun.odps
odps-sdk-udf
0.20.7
通常情况下,JAVA UDF的开发可以通过以下几种方式:
本文中会分别给出UDF、UDAF、UDTF的代码示例,并通过两种方式给出开发UDF完整流程步骤示例(UDAF、UDTF操作步骤与UDF操作步骤一样)。说明
下面将为您介绍一个字符小写转换功能的UDF实现示例。
这里假设已经完成环境准备,包括安装Studio并在Studio上创建MaxCompute项目链接以及创建MaxCompute Java Module。
package名称.文件名
,Kind选择UDF。 之后编辑如下代码: 试用
package ;
import com.aliyun.odps.udf.UDF;
public final class Lower extends UDF {
public String evaluate(String s) {
if (s == null) { return null; }
return s.toLowerCase();
}
}
说明 若需本地调试Java UDF,请参见开发和调试UDF
如下图所示,右键单击UDF的Java文件,选择 Deploy to server,弹框里选择注册到那个MaxCompute project,输入 function name
,Resource name也可以修改。
填写好后,单击 OK即可。注册成功后会有提示。
select Lower_test(‘ABC’);
结果如下图所示:说明 Studio中编写SQL脚本请参见编写SQL脚本。
此处假设已经在Eclipse插件创建好一个MaxCompute(原名ODPS)工程,详情请参见创建MaxCompute工程。
试用
package ;
import com.aliyun.odps.udf.UDF;
public final class Lower extends UDF {
public String evaluate(String s) {
if (s == null) { return null; }
return s.toLowerCase();
}
}
将这个Jar包命名为 my_lower.jar。说明
说明 MaxCompute MapReduce也用到了资源这一特有概念,MapReduce文档中对资源的使用也有阐述。
执行如下命令:试用
add jar my_lower.jar;
-- 如果存在同名的资源请将这个jar包重命名
-- 并注意修改下面示例命令中相关jar包的名字
-- 又或者直接使用-f选项覆盖原有的jar资源
试用
CREATE FUNCTION AS USING ;
参数说明:
/resources/
。Jar包被上传后,使得MaxCompute有条件自动获取代码并运行。但此时仍然无法使用这个UDF,因为MaxCompute中并没有关于这个UDF的任何信息。因此需要在MaxCompute中注册一个唯一的函数名,并指定这个函数名与哪个jar资源的哪个类对应。
执行如下命令:试用
CREATE FUNCTION test_lower AS 'org.alidata.odps.udf.examples.Lower' USING 'my_lower.jar';
说明
试用
select test_lower('A') from my_test_table;
UDAF的注册方式与UDF基本相同,使用方式与内建函数中的聚合函数相同。计算平均值的UDAF的代码示例,如下所示:
试用
package org.alidata.odps.udf.examples;
import com.aliyun.odps.io.LongWritable;
import com.aliyun.odps.io.Text;
import com.aliyun.odps.io.Writable;
import com.aliyun.odps.udf.Aggregator;
import com.aliyun.odps.udf.UDFException;
/**
* project: example_project
* table: wc_in2
* partitions: p2=1,p1=2
* columns: colc,colb,cola
*/
public class UDAFExample extends Aggregator {
@Override
public void iterate(Writable arg0, Writable[] arg1) throws UDFException {
LongWritable result = (LongWritable) arg0;
for (Writable item : arg1) {
Text txt = (Text) item;
result.set(result.get() + txt.getLength());
}
}
@Override
public void merge(Writable arg0, Writable arg1) throws UDFException {
LongWritable result = (LongWritable) arg0;
LongWritable partial = (LongWritable) arg1;
result.set(result.get() + partial.get());
}
@Override
public Writable newBuffer() {
return new LongWritable(0L);
}
@Override
public Writable terminate(Writable arg0) throws UDFException {
return arg0;
}
}
UDTF的注册和使用方式与UDF相同。代码示例如下:
试用
package org.alidata.odps.udtf.examples;
import com.aliyun.odps.udf.UDTF;
import com.aliyun.odps.udf.UDTFCollector;
import com.aliyun.odps.udf.annotation.Resolve;
import com.aliyun.odps.udf.UDFException;
// TODO define input and output types, e.g., "string,string->string,bigint".
@Resolve({"string,bigint->string,bigint"})
public class MyUDTF extends UDTF {
@Override
public void process(Object[] args) throws UDFException {
String a = (String) args[0];
Long b = (Long) args[1];
for (String t: a.split("\\s+")) {
forward(t, b);
}
}
}
MaxCompute提供多种内建函数来满足您的计算需求,同时您还可以使用DataWorks创建自定义函数来满足不同的计算需求。您也可以参考更多UDF示例。
本文将以SSSP算法为例,为您介绍如何提交Graph作业。
Graph作业的提交方式与MapReduce的提交方式基本相同。如果您使用Maven,可以从Maven库中搜索 odps-sdk-graph
获取不同版本的Java SDK,相关配置信息如下所示:
试用
com.aliyun.odps
odps-sdk-graph
0.20.7
试用
create table sssp_in (v bigint, es string);
create table sssp_out (v bigint, l bigint);
创建表的更多语句请参见表操作。
试用
1 2:2,3:1,4:4
2 1:2,3:2,4:1
3 1:1,2:2,5:1
4 1:4,2:1,5:1
5 3:1,4:1
以空格键做两列的分隔符,执行Tunnel命令上传数据。 试用
tunnel u -fd " " sssp.txt sssp_in;
说明 仅需要将SSSP代码打包即可,不需要同时将SDK打入 odps-graph-example-sssp.jar中。
试用
add jar $LOCAL_JAR_PATH/odps-graph-example-sssp.jar;
说明 添加资源的介绍请参见资源操作。
试用
jar -libjars odps-graph-example-sssp.jar -classpath $LOCAL_JAR_PATH/odps-graph-example-sssp.jar com.aliyun.odps.graph.example.SSSP 1 sssp_in sssp_out;
Jar命令用于运行MaxCompute Graph作业,用法与MapReduce作业的运行命令完全一致。
Graph作业执行时命令行会打印作业实例ID,执行进度,结果Summary等。
输出示例如下所示:试用
ID = 20130730160742915gl205u3
2013-07-31 00:18:36 SUCCESS
Summary:
Graph Input/Output
Total input bytes=211
Total input records=5
Total output bytes=161
Total output records=5
graph_input_[bsp.sssp_in]_bytes=211
graph_input_[bsp.sssp_in]_records=5
graph_output_[bsp.sssp_out]_bytes=161
graph_output_[bsp.sssp_out]_records=5
Graph Statistics
Total edges=14
Total halted vertices=5
Total sent messages=28
Total supersteps=4
Total vertices=5
Total workers=1
Graph Timers
Average superstep time (milliseconds)=7
Load time (milliseconds)=8
Max superstep time (milliseconds) =14
Max time superstep=0
Min superstep time (milliseconds)=5
Min time superstep=2
Setup time (milliseconds)=277
Shutdown time (milliseconds)=20
Total superstep time (milliseconds)=30
Total time (milliseconds)=344
OK
说明 如果您需要使用Graph功能,直接开通提交图计算作业即可。
如果您已经创建了MaxCompute项目(DataWorks工作空间),可以直接使用DataWorks临时查询功能,快速书写SQL语句操作MaxCompute。
关于临时查询功能的具体信息,请参见临时查询。
点击DataWorks控制台工作空间列表,选择您需要进入的项目,点击 进入数据开发。
直接点击 临时查询,右键 临时查询,点击 新建节点 > ODPS SQL。
在弹框中输入节点名称,点击 提交,创建您的临时查询节点。
现在您可以在刚刚创建的临时查询节点中运行MaxCompute支持的SQL语句了,我们以运行一个DDL语句创建表为例。
输入建表语句,点击 运行即可。
试用
create table if not exists sale_detail
(
shop_name string,
customer_id string,
total_price double
)
partitioned by (sale_date string,region string);
-- 创建一张分区表sale_detail
在弹框中您可以看到本次运行的费用预估,继续点击 运行。
您可以在下方的日志窗口,看到运行情况和最终结果:本次运行成功,结果为 OK。
使用同样的方法,您也可以执行查询语句。