BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

用户可以自定义Amazon Redshift数据库函数了

| 作者 谢丽 关注 11 他的粉丝 发布于 2015年9月17日. 估计阅读时间: 4 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

Amazon Redshift是一个完全托管的PB级数据仓库,使企业可以用一种经济的方式轻松分析其所有数据。近日,亚马逊云计算战略师Jeff Barr宣布,Amazon Redshift新增标量用户定义函数(UDFs)(类似Amazon Redshift内置函数ROUNDSUBSTRING)支持,允许用户使用Python 2.7定义可以在数据仓库中运行的非SQL数据处理代码。

据Amazon Web Service医疗和生命科学解决方案架构师Christopher Crosbie介绍,Python非常适合数据操作和分析,但作为一种解释型语言,它在消费大型数据仓库的数据时存在瓶颈,主要是在多个进程之间分配工作负载非常复杂。而在Amazon Redshift中,这种问题就不存在了,Python会像普通SQL查询一样并发执行,所以Amazon Redshift可以充分利用集群中的所有CPU内核执行UDFs。另一方面,有了Python UDFs,用户就可以充分利用Python的特性,Python代码可以嵌入SQL语句,同SQL语句一起执行。

下面让我们看下Jeff举的例子,使用UDF简化复杂操作。

提取URL中的主机名可以使用如下正则表达式:

SELECT REGEXP_REPLACE(url, '(https?)://([^@]*@)?([^:/]*)([/:].*|$)', ‘\3') FROM table;

而如果用户引入一个Python URL解析库URLParse,那么他就可以创建如下函数提取主机名:

CREATE FUNCTION f_hostname(url VARCHAR) RETURNS varchar IMMUTABLE AS $$ import urlparse return urlparse.urlparse(url).hostname $$ LANGUAGE plpythonu; 

如此一来,上述SQL代码就可以简化为:

SELECT f_hostname(url) FROM table; 

可以看出,用户除了可以自定义函数外,还可以利用Python库中现有的函数处理在SQL中不易表达的操作。用户甚至可以从S3和Web上添加自定义库。实际上,Amazon Redshift UDFs已经集成了Python标准库和若干其它的库,如:

  • NumPySciPy:提供用于创建多维对象、操作矩阵的数学工具;
  • Pandas:基于NumPy和SciPy提供高级的数据操作工具;
  • DateutilPytz:简化日期和时区数据操作。

另外,Jeff指出,Amazon Redshift UDFs在一个完全隔离的容器中运行。也就是说,UDFs不会破坏集群或对性能产生负面影响。而且,这些自定义函数还无法写文件或访问网络。因此,它们非常安全。

要了解更多有关UDFs的信息,请查阅官方文档或者由APN合作伙伴Looker提供的UDFs指南。另一家APN合作伙伴Periscope已经创建并发布了一些有用的标量UDFs。在接下来的两周内,亚马逊将分区域升级现有Amazon Redshift集群,升级后的集群版本是1.0.991。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

立即免费注册AWS账号,获得12个月免费套餐:点击注册

有云计算问题?立刻联系AWS云计算专家:立即联系

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

记得阿里的数据库也是支持用户自定义函数的。 by 孙 庚泽

之前使用阿里的大数据平台时,记得阿里的数据库也是支持用户自定义函数的。



(PS:infoq在登录后经常也不能评论,这是为什么!!!!)

Re: 记得阿里的数据库也是支持用户自定义函数的。 by Guo Gary

是的,正在修复中。

测试评论 by Ding Alice

评论能不能发出去呢?

Re: 记得阿里的数据库也是支持用户自定义函数的。 by 孙 庚泽

嗯,有时候满含激情的想灌一把水,结果发现不能评论,很扫兴啊。。

Re: 记得阿里的数据库也是支持用户自定义函数的。 by Ding Alice

现在问题修复了,登录后可以发评论啦。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

5 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT