本文是基于本人对MaxCompute产品的学习进度,再结合开发者社区里面的一些问题,进而整理成文。希望对大家有所帮助。

问题一、DataStudio中是否可以通过shell节点调取MaxCompute sql语句?

不可以的,Shell节点支持标准Shell语法,不支持交互性语法。如果任务较多,可以使用ODPS SQL节点来完成任务的执行。关于DataStudio的其他介绍请参考官方文档: https://help.aliyun.com/document_detail/74423.html

问题二、MaxCompute支持修改表字段的数据类型吗?

不支持,只能添加字段列,生产表不允许删除字段、修改字段及分区字段,如果必须修改,请删除之后重新建表,可以将表建立成外部表,在表删除重建以后,能将数据重新加载回来。
数据类型请参考官方文档:https://help.aliyun.com/document_detail/27821.html

问题三、MaxCompute除了UDF函数的方式外,有没有别的办法将两个没有任何关联关系的表合并成一张表呢?

可以纵向合并使用union all,横向合并的话可以借助row number,两张表都新加一个新的ID列,进行ID关联,然后取两张表的字段。

问题四、现有账号的AK禁用,创建一个新的AK,会对之前AK创建的周期性任务有影响吗?

有的,如果AccessKey被禁用或删除,将直接影响您的DataWorks中各类任务的正常运行。
AK信息谨慎操作。其余AK操作请参考官方文档:https://help.aliyun.com/document_detail/27803.html

问题五、在Java-sdk连接的情况下,如果Endpoint用的 http://service.cn.maxcompute.aliyun.com/api,如果我没有显式配置Tunnel Endpoint,用到TunnelServer时会路由到哪个Tunnel Endpoint?

如果不配置Tunnel Endpoint,Tunnel会自动路由到Service Endpoint所在网络对应的Tunnel Endpoint,例如Service Endpoint为公网就路由到公网的Tunnel Endpoint;Service Endpoint为内网就路由到内网的Tunnel Endpoint。若您继续手动配置,则以手动配置为准,不进行自动路由。具体可以参考官方文档:https://help.aliyun.com/document_detail/34951.html

问题六、请问Tunnel可以上传json格式的数据到MaxCompute表吗?

可以把json文件作为一个整体的字段来进行上传,然后在MaxCompute进行拆分,或者利用MaxCompute内建函数及UDTF转换json格式日志数据。可以参考这个文档 :https://yq.aliyun.com/articles/627758

问题七、如何正确安装MaxCompute客户端?

1、根据自身系统安装匹配JDK(建议1.7/1.8)并配置环境;
2、官网文档下载最新版客户端文件并解压;
3、根据开通好的工作空间配置config文件;
4、根据自身系统选择执行文件(bin文件内);
5、执行测试建表语句:create table tbll(id bigint)。
安装及配置客户端过程中,可能会出现错误,请参考官方文档解决:
https://help.aliyun.com/document_detail/142260.html

问题八、MaxCompute支持将2010/1/3这种格式转成 2010-01-03吗?

如果是2010/01/03这种格式的话可以使用to_char(TO_DATE(‘2019/04/02’, ‘yyyy/mm/dd’), ‘yyyy-mm-dd’)去进行转换,
如果是2010/1/3就需要去编写UDF函数去实现日期的转换。
更多日期函数请参考官方文档:https://help.aliyun.com/document_detail/48974.html

问题九、使用OSS外部表怎么样将多个小文件,输出为一个文件?

查看Logview日志,看SQL的执行计划,看最后一个是Reducer还是Joiner,
如果是Reducer则设置参数为set odps.stage.reducer.num=1,
如果是Joiner,则设置为set odps.stage.joiner.num=1。

问题十、DataWorks业务流程中,根据业务需求进行节点连接之后自动解析上下游是否会发生错误?

不会,在调度系统中,每一个工作空间中默认会创建一个projectname_root节点作为根节点。如果本节点没有上游节点,可以直接依赖根节点。依赖属性中配置节点的上游依赖,表示即使当前节点的实例已经到定时时间,也必须等待上游节点的实例运行完毕,才会触发运行。

 

本文作者:亢海鹏