MaxCompute - ODPS重装上阵 第三弹 - 复杂类型

摘要: MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高广大ODPS开发者的生产力。

点此查看原文

MaxCompute(原ODPS)是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用,支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外,也致力于提升SQL语言的用户体验和表达能力,提高广大ODPS开发者的生产力。

MaxCompute基于ODPS2.0新一代的SQL引擎,显著提升了SQL语言编译过程的易用性与语言的表达能力。我们在此推出MaxCompute(ODPS2.0)重装上阵系列文章

第一弹 - 善用MaxCompute编译器的错误和警告
第二弹 - 新的基本数据类型与内建函数
第三弹 - 复杂类型
第四弹 - CTE,VALUES,SEMIJOIN

上次向您介绍了 新的基本数据类型与内建函数,这次向您介绍复杂数据类型

原ODPS也支持两种复杂类型,ARRAY, MAP,但是有些场景下还是不够用

场景1
我的项目里,生成的一个中间表,为了优化性能,里面有一列最好是个数组,因为如果把数组打散,每行上存一个元素,会因为其他列的重复导致数据量爆炸。首先想从上游表中生成这个数组,搜索半天文档,发现唯一的方式是把源数据列先转STRING,再用wm_concat聚合,再用split函数打散成ARRAY,这样原来类型信息丢了,不过STRING似乎也能用,好,继续。后面的运算有个地方需要取数组最后一个元素,试图用数组下标配合size函数,my_array[size(my_array)], 发现报告错误,下标必须是常量,可是我的数组不是定长的,看看有没有函数能反转数组呢?没有!最后不得不放弃使用数组。。。
场景2
我的任务是为每个广告生成一个曲线,代表随着广告商的出价由低到高,预计的impression, click次数的曲线。最自然的表达是有个数据结构,里面存着出价,impression次数,click次数。可是ODPS不支持这样的用法,只好encode成一个字符串,每次操作先编码,再解码。好麻烦,效率也很差,可是没有办法。。。
MaxCompute采用基于ODPS2.0的SQL引擎,大幅度改进了复杂类型并提供了配套的内建函数,基本解决了上述问题。

复杂类型的扩充
此文中采用MaxCompute Studio作展示 ( MaxCompute从2.8.0.2版本开始支持复杂类型,如果您的版本不够新,请升级到最新版本 )。

首先,安装MaxCompute Studio,导入测试MaxCompute项目,创建工程,建立一个新的MaxCompute脚本文件, 如下

图片描述

运行后,可以在MaxCompute Studio的Project Explorer中找到新创建的表,察看表的详细信息,并预览数据,如下图
图片描述

可以看到MaxCompute支持ARRAY, MAP, STRUCT类型,并且可以任意嵌套使用。

MaxCompute Studio支持含新类型表数据的导入导出,可参考此ATA文章

MaxCompute支持的复杂类型见下表
图片描述
复杂类型构造与操作函数

图片描述
图片描述
在UDF中使用复杂类型
原ODPS不支持在UDF中访问任何复杂类型。MaxCompute Java UDF支持所有复杂类型,Python UDF也会在不久的将来支持。

JAVA UDF中复杂类型的表示方法
ODPS的UDF分为三大类:UDF,UDAF,UDTF,其中:

1.UDAF和UDTF通过@Resolve annotation来指定sinature,在MaxCompute 2.0上线后,用户将可以在Resolve annotation中。如 @Resolve(“array,struct

@Resolve("struct<a:bigint>,string->string")
public class UdfArray extends UDF {public String evaluate(List<String> vals, Long len) {return vals.get(len.intValue());}public String evaluate(Map<String,String> map, String key) {return map.get(key);}public String evaluate(Struct struct, String key) {return struct.getFieldValue("a") + key;}
}

用户可以直接将复杂类型传入UDF中:

create function my_index as 'UdfArray' using 'myjar.jar';
select id, my_index(array('red', 'yellow', 'green'), colorOrdinal) as color_name from colors;

小节
MaxCompute丰富了复杂类型的支持,可以更好的适应各种应用场景。MaxCompute仍将在兼容性,表达能力等多方面持续改进类型系统。从本系列的下一篇起,开始介绍MaxCompute在SQL语言其他方面的改进!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ecplise安装flowable插件

ecplise安装flowable插件步骤&#xff1a; Help ---- > Install New Software ---- > add, 然后添加的弹窗中输入以下信息&#xff1a; Name: Flowable BPMN 2.0 designerLocation: http://flowable.org/designer/update/创建一个maven项目测试一下:

OpenStack精华问答 | OpenStack和CloudStack对比

自诞生以来&#xff0c;OpenStack 似乎一直被质疑&#xff0c;其背后最重要的两大推手 NASA 和 Rackspace 都弃它而去&#xff0c;惠普、思科接连宣布关闭基于 OpenStack 的公有云服务&#xff0c;但是,OpenStack 依旧坚挺。1Q&#xff1a;OpenStack发展历史A:2Q&#xff1a;op…

基于TableStore/MaxCompute的数据采集分析系统介绍

摘要 在互联网高度发达的今天&#xff0c;ipad、手机等智能终端设备随处可见&#xff0c;运行在其中的APP、网站也非常多&#xff0c;如何采集终端数据进行分析&#xff0c;提升软件的品质非常重要&#xff0c;例如PV/UV统计、用户行为数据统计与分析等。虽然场景简单&#xf…

第3篇:Flowable-IDM详述

接上一篇&#xff1a; 第2篇&#xff1a;Flowable启动 https://blog.csdn.net/weixin_40816738/article/details/102875324 文章目录一、Flowable-IDM功能二、Flowable-IDM登录地址三、Flowable-IDM登录用户和页面四、Flowable-IDM用户管理页面五、Flowable-IDM用户组管理页面六…

比“5G有多快”更重要的,是5G将带来哪些改变

戳蓝字“CSDN云计算”关注我们哦&#xff01;“速度&#xff0c;其实是5G最无聊的应用。”北京邮电大学20岁的何同学&#xff0c;在他制作的一个火遍全网的视频中&#xff0c;用这句话结尾。5G&#xff0c;对我们普通人而言&#xff0c;是个熟悉又陌生的词。由于它是中美贸易战…

阿里云新推出 HiTSDB + IoT套件 物联网设备上云步入快车道

摘要&#xff1a; 阿里云针对物联网企业遇到的5大痛点&#xff0c;提供了HiTSDB IoT 套件的一体化解决方案&#xff0c;能够支持物联设备快速上云&#xff0c;高效设备管理&#xff0c;数据安全&#xff0c;低成本海量数据存储&#xff0c;实时掌握设备状态&#xff0c;快速发现…

阿里云 MVP技术直播——缪政辉教你如何搭建万能LNMP环境

摘要&#xff1a; 阿里云 MVP 缪政辉开直播咯&#xff01;快把这个好消息告诉你身边热爱技术&#xff0c;喜欢云计算的同学&#xff01; 缪政辉是谁&#xff1f; 网名妙正灰&#xff0c;真名和网名读法一致。阿里云第三季新晋MVP&#xff0c;电商在读大学生。云计算领域罕见的文…

第4篇:Flowable-Modeler详述之流程概述

接上一篇 第3篇&#xff1a;Flowable-IDM详述 https://blog.csdn.net/weixin_40816738/article/details/102885902 文章目录一、Flowable-Modeler功能1. 提供可视化编辑器2. 提供可视化参数配置3. 提供导入导出功能二、Flowable-Modeler界面之流程介绍三、Flowable-Modeler之创…

MaxCompute - ODPS重装上阵 第四弹 - CTE,VALUES,SEMIJOIN

摘要&#xff1a; MaxCompute&#xff08;原ODPS&#xff09;是阿里云自主研发的具有业界领先水平的分布式大数据处理平台, 尤其在集团内部得到广泛应用&#xff0c;支撑了多个BU的核心业务。 MaxCompute除了持续优化性能外&#xff0c;也致力于提升SQL语言的用户体验和表达能力…

Kubernetes端到端解决方案Part3:如何正确部署Kubernetes

戳蓝字“CSDN云计算”关注我们哦&#xff01;在之前的文章中我们向您介绍了Kubernetes的入门挑战以及如何执行端到端的即服务解决方案。本篇文章&#xff0c;我们将继续探讨如何正确部署Kubernetes&#xff0c;并探索服务编排解决方案。01如何正确部署Kubernetes?在我们进一步…

浅谈PyODPS

摘要&#xff1a; 在我看来&#xff0c;PyODPS就是阿里云上的Python。值得注意的是&#xff0c;这里的定语“阿里云上的”一定不能精简掉&#xff0c;因为PyODPS不等于单机版的Python&#xff01; 点此查看原文 目录 我眼中的PyODPS 安装和升级PyODPS版本 PyODPS的牛刀小试 …

第5篇:Flowable-Modeler详述之开发环境搭建

接上一篇&#xff1a; 第4篇&#xff1a;Flowable-Modeler详述之流程概述 https://blog.csdn.net/weixin_40816738/article/details/102886712 文章目录一、环境搭建1. 下载/安装jdk2. 安装mysql 5.73. 安装idea4. 配置maven4.1. 配置maven仓库4.2. mirrors中添加阿里服务器4.3…

【2018开年知识盛会】15位大咖直播分享,全方位解析NoSQL数据库

摘要&#xff1a; 2018年开年伊始&#xff0c;阿里云数据库团队将为大家带来一场别开生面的知识盛会&#xff0c;15位大咖汇聚云栖社区&#xff0c;带来18小时数据库干货分享&#xff01; 点此查看原文 2018年开年伊始&#xff0c;阿里云数据库团队将为大家带来一场别开生面的知…

SUSE,为企业云原生打造多模平台

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;如今&#xff0c;数字化转型已经成为大势所趋&#xff0c;没有完成数字化转型的企业将…

云端资源,“掌”握手中 ——关于 阿里云 App你不知道的五件事

摘要&#xff1a; 如果购买过阿里云的产品&#xff0c;亦或是关注着云计算的发展&#xff0c;那么你应该听说过阿里云官方推出的这款移动端应用 —— “阿里云 App”&#xff0c;它是云厂商中较早推出的移动端应用&#xff0c;功能较其他云厂商的移动端应用更为丰富。通过关注核…

php mysql5.7.110安装教程_MYSQL教程mysql5.7.19 winx64安装配置方法图文教程(win10)

《MYSQL教程mysql5.7.19 winx64安装配置方法图文教程(win10)》要点&#xff1a;本文介绍了MYSQL教程mysql5.7.19 winx64安装配置方法图文教程(win10)&#xff0c;希望对您有用。如果有疑问&#xff0c;可以联系我们。mysql 5.7.19 winx64安装教程记录如下,分享给大家MYSQL数据库…

Spring精华问答 | 为何使用Spring?

Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持。今天就让我们来看看关于Spring的精华问答吧。1Q&#xff1a;Spring的目标是什么&#xff1f;A&#xff1a;Spring官方主页&#xff08;http://spring.io&#xff09;有…

javaweb初体验

javaweb初体验 文章目录 javaweb初体验前言一、流程&#xff1a;1.创建Maven的父工程2.创建Maven&#xff0c;Webapp的子工程3.在pom.xml文件中添加依赖&#xff08;父工程与子工程共用&#xff09;4.写一个helloservlet类实现httpservlet接口&#xff0c;重写doget&#xff0c…

python高考查分_python爬虫 查询全国大学专业的录取情况

估计很多人在填报高考自愿的时候都会难以选择学校&#xff0c;有自己心仪的专业&#xff0c;但是在网上搜了半天也不能确定填哪一所学校。如果填了录取分数线低的&#xff0c;那将会浪费很多分数&#xff0c;表示有点遗憾。如果没有录取上&#xff0c;那就更遗憾了… 在我们想根…

第6篇:Flowable-Modeler详述之常见问题Table act_ge_property doesn't exist

接上一篇&#xff1a; 第5篇&#xff1a; Flowable-Modeler详述之开发环境搭建 https://blog.csdn.net/weixin_40816738/article/details/102887854 文章目录1. 问题描述2. 问题定位解决方案一解决方案二(推荐)1. 问题描述 在配置完Springboot的开发环境以后&#xff0c;启动的…