阿里云
MaxCompute
快速入门
文档版本:20181109
MaxCompute
法律声明
快速入门 / 法律声明
阿里云提醒您在阅读或使用本文档之前仔细阅读、充分理解本法律声明各条款的内容。如果您阅读
或使用本文档,您的阅读或使用行为将被视为对本声明全部内容的认可。
1. 您应当通过阿里云网站或阿里云提供的其他授权通道下载、获取本文档,且仅能用于自身的合法
合规的业务活动。本文档的内容视为阿里云的保密信息,您应当严格遵守保密义务;未经阿里云
事先书面同意,您不得向任何第三方披露本手册内容或提供给任何第三方使用。
2. 未经阿里云事先书面许可,任何单位、公司或个人不得擅自摘抄、翻译、复制本文档内容的部分
或全部,不得以任何方式或途径进行传播和宣传。
3. 由于产品版本升级、调整或其他原因,本文档内容有可能变更。阿里云保留在没有任何通知或者
提示下对本文档的内容进行修改的权利,并在阿里云授权通道中不时发布更新后的用户文档。您
应当实时关注用户文档的版本变更并通过阿里云授权渠道下载、获取最新版的用户文档。
4. 本文档仅作为用户使用阿里云产品及服务的参考性指引,阿里云以产品及服务的”现状“、“有缺
陷”和“当前功能”的状态提供本文档。阿里云在现有技术的基础上尽最大努力提供相应的介绍及
操作指引,但阿里云在此明确声明对本文档内容的准确性、完整性、适用性、可靠性等不作任何
明示或暗示的保证。任何单位、公司或个人因为下载、使用或信赖本文档而发生任何差错或经济
损失的,阿里云不承担任何法律责任。在任何情况下,阿里云均不对任何间接性、后果性、惩戒
性、偶然性、特殊性或刑罚性的损害,包括用户使用或信赖本文档而遭受的利润损失,承担责
任(即使阿里云已被告知该等损失的可能性)。
5. 阿里云网站上所有内容,包括但不限于著作、产品、图片、档案、资讯、资料、网站架构、网站
画面的安排、网页设计,均由阿里云和/或其关联公司依法拥有其知识产权,包括但不限于商标
权、专利权、著作权、商业秘密等。非经阿里云和/或其关联公司书面同意,任何人不得擅自使
用、修改、复制、公开传播、改变、散布、发行或公开发表阿里云网站、产品程序或内容。此
外,未经阿里云事先书面同意,任何人不得为了任何营销、广告、促销或其他目的使用、公布或
复制阿里云的名称(包括但不限于单独为或以组合形式包含”阿里云”、Aliyun”、“万网”等阿里云
和/或其关联公司品牌,上述品牌的附属标志及图案或任何类似公司名称、商号、商标、产品或
服务名称、域名、图案标示、标志、标识或通过特定描述使第三方能够识别阿里云和/或其关联
公司)。
6. 如若发现本文档存在任何错误,请与阿里云取得直接联系。
文档版本:20181109
I
MaxCompute
通用约定
格式
说明
样例
快速入门 / 通用约定
该类警示信息将导致系统重大变更甚至
故障,或者导致人身伤害等结果。
该类警示信息可能导致系统重大变更甚
至故障,或者导致人身伤害等结果。
用于补充说明、最佳实践、窍门等,不
是用户必须了解的内容。
禁止:
重置操作将丢失用户配置数据。
警告:
重启操作将导致业务中断,恢复业务所需
时间约10分钟。
说明:
您也可以通过按Ctrl + A选中全部文件。
设置 > 网络 > 设置网络类型
执行 cd /d C:/windows 命令,进
入Windows系统文件夹。
bae log list --instanceid
Instance_ID
>
粗体
courier
字体
斜体
多级菜单递进。
表示按键、菜单、页面名称等UI元素。 单击 确定。
命令。
表示参数、变量。
[]或者[a|b] 表示可选项,至多选择一个。
{}或者{a|b} 表示必选项,至多选择一个。
ipconfig [-all|-t]
swich {stand | slave}
文档版本:20181109
I
MaxCompute
目录
快速入门 / 目录
法律声明......................................................................................................I
通用约定......................................................................................................I
1 创建/查看/删除表.....................................................................................1
2 导入数据................................................................................................. 6
3 运行SQL............................................................................................... 15
4 编写MapReduce.................................................................................. 21
5 JAVA UDF开发.................................................................................... 23
6 编写Graph............................................................................................ 29
II
文档版本:20181109
MaxCompute
1 创建/查看/删除表
快速入门 / 1 创建/查看/删除表
当您被添加到项目空间并被赋予建表等权限后,即可操作MaxCompute。由于在MaxCompute中的
操作对象(输入、输出)都是表,所以在处理数据之前,首先要创建表、分区。
创建/删除表的方式有以下几种:
• 通过MaxCompute Studio实现,详情请参见可视化创建/修改/删除表。
• 通过DataWorks实现,详情请参见创建表和删除表。
• 通过客户端常用命令实现。
本文将为您介绍如何通过客户端常用命令进行创建表、查看表和删除表的操作,客户端的安装请参
见安装并配置客户端。
创建表
建表语句如下所示:
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
建表语句说明:
• 表名与列名均对大小写不敏感。
• 在创建表时,如果不指定if not exists选项而存在同名表,则返回出错;若指定此选项,则无论是
否存在同名表,即使原表结构与要创建的目标表结构不一致,均返回成功。已存在的同名表的元
信息不会被改动。
• 数据类型:包括Bigint、Double、Boolean、Datetime、Decimal和String等多种数据类型。
• 表名,列名中不能有特殊字符,只能用英文的a-z,A-Z及数字和下划线 _,且以字母开头,名称
的长度不超过128字节。
• Partitioned by:指定表的分区字段,目前仅支持String类型,其他类型行为未定义。分区值不
可以有双字节字符(如中文),必须是以英文字母a-z,A-Z开始后可跟字母数字,名称的长度
不超过128字节。允许的字符包括空格、冒号(:)、下划线(_)、美元符($)、井号(#)、
点(.)、感叹号(!)和(@),出现其他字符行为未定义。例如(\t),(\n),(/)等 。当
文档版本:20181109
1
MaxCompute
快速入门 / 1 创建/查看/删除表
利用分区字段对表进行分区时,新增分区、更新分区内数据和读取分区数据均不需要做全表扫
描,可以提高处理效率。
• 注释内容是长度不超过1024字节的有效字符串。
•
lifecycle指明此表的生命周期,单位:天。create table like语句不会复制源表的生命周期
属性。
• 目前,在表中建的分区层次不能超过6级。一个表允许的分区个数支持按照具体的project配
置,默认60,000个。
说明:
• 创建表的详细介绍请参见表操作。
• 添加分区请参见分区/列操作。
• 生命周期的修改请参见修改表的生命周期属性。
创建表示例如下:
create table test1 (key string); -- 创建非分区表,表名 test1,字段名 key
,数据类型 string。
create table test2 (key bigint) partitioned by (pt string, ds string);
--创建分区表
create table test3 (key boolean) partitioned by (pt string, ds string
) lifecycle 100; -- 创建带有生命周期的表
create table test4 like test3; -- 除生命周期属性外,test3 的其他属性(字段类
型,分区类型等)均与 test4 完全一致
create table test5 as select * from test2; -- 这个操作会创建 test5,但分
区,生命周期信息不会被拷贝到目标表中。
-- 此操作仅会将 test2 的数据复制到 test5 中(如果 test2 有数据的话,此示例中
test2 为空表,后续章节会介绍数据导入)。
创建表的场景如下:
假设需要创建一张用户表user,包括如下信息:
• user_id bigint类型:用户标识,唯一标识一个用户。
• gender bigint类型:性别(0,未知;1,男;2,女)。
• age bigint:用户年龄。
按照Region(区域)和dt(日期)进行分区,生命周期为365天。
建表语句如下所示:
CREATE TABLE user
2
文档版本:20181109
MaxCompute
快速入门 / 1 创建/查看/删除表
( user_id BIGINT, gender BIGINT COMMENT '0 unknow,1 male, 2 Female',
age BIGINT)
PARTITIONED BY (region string, dt string) LIFECYCLE 365;
创建分区
当创建一张分区表之后,为了往该表里面导入不同分区数据,您需要创建分区。命令如下:
alter table table_name add [if not exists] partition partition_spec
partition_spec:
: (partition_col1 = partition_col_value1, partition_col2 = partiton_c
ol_value2, ...)
如上述示例,给用户表user添加区域为hangzhou,日期为20150923的分区,句子显示如下:
alter table user add if not exists partition(region='hangzhou',dt='
20150923');
查看表信息
当创建表成功之后,您可以通过desc
;命令查看表的信息。
您可执行命令desc test3;查看上述示例中表test3的信息。
结果显示如下:
odps@ $odps_project>desc test3;
+------------------------------------------------------------------------------------
+
| Owner: ALIYUN$maojing.mj@alibaba-inc.com | Project: $odps_project
| TableComment: |
+------------------------------------------------------------------------------------
+
| CreateTime: 2015-09-18 12:26:57 |
| LastDDLTime: 2015-09-18 12:26:57 |
| LastModifiedTime: 2015-09-18 12:26:57 |
| Lifecycle: 100 |
+------------------------------------------------------------------------------------
+
| InternalTable: YES | Size: 0 |
+------------------------------------------------------------------------------------
+
| Native Columns: |
+------------------------------------------------------------------------------------
+
| Field | Type | Label | Comment |
+------------------------------------------------------------------------------------
+
| key | boolean | | |
+------------------------------------------------------------------------------------
+
| Partition Columns: |
+------------------------------------------------------------------------------------
+
| pt | string | |
| ds | string | |
文档版本:20181109
3
MaxCompute
快速入门 / 1 创建/查看/删除表
+------------------------------------------------------------------------------------
+
您可执行命令desc test4;查看上述示例中表test4的信息。
odps@ $odps_project>desc test4;
+------------------------------------------------------------------------------------
+
| Owner: ALIYUN$maojing.mj@alibaba-inc.com | Project: $odps_project
| TableComment: |
+------------------------------------------------------------------------------------
+
| CreateTime: 2015-09-18 12:27:09 |
| LastDDLTime: 2015-09-18 12:27:09 |
| LastModifiedTime: 2015-09-18 12:27:09 |
+------------------------------------------------------------------------------------
+
| InternalTable: YES | Size: 0 |
+------------------------------------------------------------------------------------
+
| Native Columns: |
+------------------------------------------------------------------------------------
+
| Field | Type | Label | Comment |
+------------------------------------------------------------------------------------
+
| key | boolean | | |
+------------------------------------------------------------------------------------
+
| Partition Columns: |
+------------------------------------------------------------------------------------
+
| pt | string | |
| ds | string | |
+------------------------------------------------------------------------------------
+
您会发现,除生命周期属性外,test3的其他属性(字段类型、分区类型等)均与test4完全一致。查
看表信息的更多详情请参见表操作。
您如果查看test5的表信息,pt、ds两个字段仅会作为普通列存在,而不是表的分区 。
删除分区
删除分区的命令如下所示:
alter table table_name drop [if exists] partition_spec; partition_spec
:
4
文档版本:20181109