博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MaxCompute 学习计划(三)
阅读量:6161 次
发布时间:2019-06-21

本文共 1490 字,大约阅读时间需要 4 分钟。

MapReduce/Graph

当业务逻辑实在是复杂的时候,用SQL配合UDF(包括UDAF和UDTF)也无法实现的时候,可以使用MapReduce或Graph来实现。

作业

MapReduce

  • MapReduce文档里的十多个示例程序每个都很重要,务必每个都看懂每行代码的作用。参考。
  • 使用 / 配置开发环境,可以修改warehouse里的数据然后观察任务的运行结果的变化。
  • 并用客户端工具运行任务,并了解-classpath和-resources参数的。
  • 通过System.out和System.err输出日志信息,并使用观察服务器上的日志。
  • 使用开发工具开发实现开窗函数。
  • 了解。
  • 数加的大数据开发套件里的里的每个配置,对应到MR的main函数里是什么?可以参考的说明。

Graph

  • 同MR,请至少看懂实例代码。对理解示例非常有帮助。

重难点

  • 二次排序。数据会先根据PartitionColumns的设置从Map发到不同Reduce后,先经过排序,然后根据OutputGroupingColumns相同的key进入reduce方法。所以OutputGroupingColumns的设置需要是OutputKeySortColumns的子集。理解了这些后也就可以理解为什么文档里的PartitionColumns和OutputGroupingColumns设置的都是一样的。而OutputKeySortColumns是在OutputGroupingColumns的基础上再增加排序列。
//先把数据PartitionColumns设置分配给不同的Reducer        job.setPartitionColumns(new String[] { "i1" });        //在Reducer上执行排序,这样就能保证i2的顺序        job.setOutputKeySortColumns(new String[] { "i1", "i2" });        //这里数据已经都是排序好的,只需要根据i1里的内容来判断是否需要进同一个reduce方法        job.setOutputGroupingColumns(new String[] { "i1" });
  • 的使用方法在UDTF的例子也有提到。一般资源的读取可以写在setup里,只需要读一次。

思考题

  • 如果有参数文件为什么不能直接打在jar包里,而是要用资源文件?
  • 阿里集团内部SQL+UDF的任务数远多于MapReduce任务,这个现象最直接的原因是什么?

参考答案

  • 安全沙箱
  • 工程效率

小技巧

SDK 和 Tunnel

使用SDK可以让我们可以使用JAVA/PYTHON语言调用MaxCompute命令。

Tunnel命令可以让我们把数据批量上传/下载。

作业

SDK

  • 参考 / ,对比客户端的工具里、、、、,是否已经能自己实现呢?
  • 使用JAVA SDK可以到search.maven.org下载。Python的用户可以参考。

Tunnel

  • 和。
  • 和 的说明。
  • 是基于SDK开发的。需要了解命令行工具的基本使用方法。注意上传和下载的参数的用法。

思考题

  • 基于SDK和TUNNEL实现用JAVA/PYTHON代码运行SQL,并把结果保存下来(需要考虑到Project的,返回的数据不能超过10000行)。

参考答案

  • SQLTASK可以跑SQL。可以先把数据保存成一张临时表(CREATE TABLE XXX AS SELECT),并在任务结束后删除。下载数据使用TUNNEL。

小技巧

转载地址:http://mklfa.baihongyu.com/

你可能感兴趣的文章
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
图解SSH原理及两种登录方法
查看>>
查询个人站点的文章、分类和标签查询
查看>>
基础知识:数字、字符串、列表 的类型及内置方法
查看>>
JSP的隐式对象
查看>>
JS图片跟着鼠标跑效果
查看>>
[SCOI2005][BZOJ 1084]最大子矩阵
查看>>
Leetcode 3. Longest Substring Without Repeating Characters
查看>>
416. Partition Equal Subset Sum
查看>>
app内部H5测试点总结
查看>>
[TC13761]Mutalisk
查看>>
while()
查看>>
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
bulk
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>