MaxCompute 学习计划(一)

简介: 学好MaxCompute的知识技能checklist

前言

MaxCompue(原名ODPS)是阿里巴巴自主研发的一种快速、完全托管的TB/PB级数据仓库解决方案,获得了很多用户的喜爱。这篇帖子希望能给这些用户关于如何学习使用一些帮助。 帖子本身很少直接介绍MaxCompute的知识,但是会给出如果想学好需要做到什么,像是一张Checklist。当随着时间的积累,你在上面打满了勾的时候,相信你已经能熟练使用MaxCompute进行开发了。在写本学习计划时,因为Datahub和流计算正在重构,暂时不包含在内。

如果在学习过程中遇到任何解决不了的问题,可以在文后和我们留言互动。因为问题或许有共性,或许也能帮到其他人。但是涉及到诸如账号密码,Access Id/Key一类的敏感信息,请务必不要写在留言里,有需要可以提交工单咨询。

大纲

本学习计划主要包含:

  • Mysql SQL
  • MaxCompute SQL
  • UDF/UDAF/UDTF
  • MapReduce和Graph的开发
  • SDK和Tunnel

形式

学习计划不会大篇幅的介绍MaxCompute相关的知识,但是会告诉你如果要完成本篇的学习,需要了解什么。你可能需要翻阅指定的文档,也可能需要使用搜索引擎去搜专业名词的含义。课程会包含一些练习题,希望每个题目都没有问题后再继续下一课的学习。

Mysql SQL

现在的系统架构里,数据被大量地以表的形式存储在数据库里。使用SQL语言进行查询,是分析这些数据最方便的方法。我们可以用SQL非常简单地分析用户的区域分布,了解销量的同比和环比等等。

在本课学习计划的第一课,我们会复习标准的SQL语法。读书时对SQL编写比较自信的同学可以跳过本课,或者直接去看思考题。

数据集

这里选择大家比较熟悉的Emp/Dept表做为数据集。为了方便大家测试,给出了相关的SQL。注意有删表指令,操作前需核实。

DROP TABLE IF EXISTS  `emp`;
CREATE TABLE `emp` (
  `EMPNO` int(4) NOT NULL,
  `ENAME` varchar(10) DEFAULT NULL,
  `JOB` varchar(9) DEFAULT NULL,
  `MGR` int(4) DEFAULT NULL,
  `HIREDATE` date DEFAULT NULL,
  `SAL` int(7) DEFAULT NULL,
  `COMM` int(7) DEFAULT NULL,
  `DEPTNO` int(2) DEFAULT NULL,
  PRIMARY KEY (`EMPNO`),
  KEY `FK_DEPTNO` (`DEPTNO`),
  CONSTRAINT `FK_DEPTNO` FOREIGN KEY (`DEPTNO`) REFERENCES `dept` (`DEPTNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into `emp`(`EMPNO`,`ENAME`,`JOB`,`MGR`,`HIREDATE`,`SAL`,`COMM`,`DEPTNO`) values
('7369','SMITH','CLERK','7902','1980-12-17','800',null,'20'),
('7499','ALLEN','SALESMAN','7698','1981-02-20','1600','300','30'),
('7521','WARD','SALESMAN','7698','1981-02-22','1250','500','30'),
('7566','JONES','MANAGER','7839','1981-04-02','2975',null,'20'),
('7654','MARTIN','SALESMAN','7698','1981-09-28','1250','1400','30'),
('7698','BLAKE','MANAGER','7839','1981-05-01','2850',null,'30'),
('7782','CLARK','MANAGER','7839','1981-06-09','2450',null,'10'),
('7788','SCOTT','ANALYST','7566','1987-04-19','3000',null,'20'),
('7839','KING','PRESIDENT',null,'1981-11-17','5000',null,'10'),
('7844','TURNER','SALESMAN','7698','1981-09-08','1500','0','30'),
('7876','ADAMS','CLERK','7788','1987-05-23','1100',null,'20'),
('7900','JAMES','CLERK','7698','1981-12-03','950',null,'30'),
('7902','FORD','ANALYST','7566','1981-12-03','3000',null,'20'),
('7934','MILLER','CLERK','7782','1982-01-23','1300',null,'10');

DROP TABLE IF EXISTS  `dept`;
CREATE TABLE `dept` (
  `DEPTNO` int(2) NOT NULL,
  `DNAME` varchar(14) DEFAULT NULL,
  `LOC` varchar(13) DEFAULT NULL,
  PRIMARY KEY (`DEPTNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into `dept`(`DEPTNO`,`DNAME`,`LOC`) values
('10','ACCOUNTING','NEW YORK'),
('20','RESEARCH','DALLAS'),
('30','SALES','CHICAGO'),
('40','OPERATIONS','BOSTON');

作业

这些是从网上找的题目,参考答案网上也有。记得在搜答案之前要先自己写出语句并执行过看看是否符合预期。

1. 列出至少有一个员工的所有部门。
2. 列出薪金比“SMITH”多的所有员工。
3. 列出所有员工的姓名及其直接上级的姓名。
4. 列出受雇日期早于其直接上级的所有员工。
5. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
6. 列出所有“CLERK”(办事员)的姓名及其部门名称。
7. 列出最低薪金大于1500的各种工作。
8. 列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号
9. 列出薪金高于公司平均薪金的所有员工。
10.列出与“SCOTT”从事相同工作的所有员工。
11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
13.列出在每个部门工作的员工数量、平均工资和平均服务期限。
14.列出所有员工的姓名、部门名称和工资。
15.列出所有部门的详细信息和部门人数。
16.列出各种工作的最低工资。
17.列出各个部门的MANAGER(经理)的最低薪金。
18.列出所有员工的年工资,按年薪从低到高排序。

  1. 用两种方法求出薪水的最大值。

思考题

  • 表的连接方式都有哪些,各自的使用场景是什么?比如题2和3。(查资料)
  • in和exists遇到子查询结果为空或者有重复的内容的时候结果怎么样?如何改成join?(参考这里

SQL的用法对后面的MaxCompute SQL的学习很有帮助,而且现在市面上学习资料非常多,这里不再赘言。不过这些题目无法代表全部的SQL技能,还需大家多思考多练习。

另外如果大家有从网上搜这些题目的话,可能会惊叹,为什么我的结果和别人的答案不一样。举个例子,就说题2。如果表里有多个叫“SMITH”的员工,那是比任意一个“SMITH”薪金高就返回呢,还是比全部的“SMITH”高?其实更多的是一个理解或者口径的问题,同样的一句话可能有不同的理解。所以这句话我必须要加粗:良好的沟通能力是数据分析师的核心技能之一。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
6月前
|
SQL 资源调度 数据库
数仓学习---14、大数据技术之DolphinScheduler
数仓学习---14、大数据技术之DolphinScheduler
|
7月前
|
分布式计算 Hadoop 大数据
Hadoop学习:深入解析MapReduce的大数据魔力之数据压缩(四)
Hadoop学习:深入解析MapReduce的大数据魔力之数据压缩(四)
|
7月前
|
分布式计算 资源调度 Hadoop
Hadoop学习指南:探索大数据时代的重要组成——Hadoop运行模式(下)
Hadoop学习指南:探索大数据时代的重要组成——Hadoop运行模式(下)
|
7月前
|
存储 数据采集 机器学习/深度学习
大数据学习的一些概念(值得背)
大数据学习的一些概念(值得背)
|
7月前
|
分布式计算 Hadoop 大数据
Hadoop学习:深入解析MapReduce的大数据魔力(三)
Hadoop学习:深入解析MapReduce的大数据魔力(三)
|
6月前
|
SQL NoSQL Java
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
|
6月前
|
人工智能 搜索推荐 数据可视化
电子学习中的大数据分析:每个人都应该知道的这些方面
电子学习中的大数据分析:每个人都应该知道的这些方面
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】
【MySQL 数据库】6、一篇文章学习【索引知识】,提高大数据量的查询效率【文末送书】
56 0
|
7月前
|
存储 分布式计算 Hadoop
Hadoop学习:深入解析MapReduce的大数据魔力(二)
Hadoop学习:深入解析MapReduce的大数据魔力(二)
|
7月前
|
存储 分布式计算 Hadoop
Hadoop学习指南:探索大数据时代的重要组成——HDFS(上)
Hadoop学习指南:探索大数据时代的重要组成——HDFS(上)

相关产品

  • 云原生大数据计算服务 MaxCompute