9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

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

  • 2015-09-16
  • 本文字数:1186 字

    阅读完需:约 4 分钟

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 标准库和若干其它的库,如:

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

另外,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 云计算专家:立即联系

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2015-09-16 19:001431
用户头像

发布了 1008 篇内容, 共 361.9 次阅读, 收获喜欢 334 次。

关注

评论

发布
暂无评论
发现更多内容

EGG NETWORK阿凡提公链全新一代算法稳定币之王EFTalk

币圈那点事

[译文] 用故事点数评估开发工作真的好吗?

LigaAI

项目管理 程序人生 敏捷开发

Java面试过了京东五面之后,发现掌握了这些技术也没有那么难

钟奕礼

Java 编程 程序员 架构 面试

智慧派出所管理系统,派出所指挥调度平台搭建

一个数组通过配置随机抽取组成小数组

waitmoon

Java

【译】ECMAScript 2021: 最终功能集确定

清秋

JavaScript ecmascript 翻译 ES6 新闻

民国最出名的女作家,为什么是她?

了了Vita

Sentinel的注解支持 - @SentinelResource使用详解

麦洛

sentinel SpringCloud Alibaba

在项目启动时(无request)获取Tomcat端口号

waitmoon

Java

跟我学丨如何用鲲鹏服务器搭建Hadoop全分布式集群

华为云开发者联盟

hadoop 服务器 集群 鲲鹏 Hadoop全分布式集群

Spring Boot集成 Sentinel 实现接口流量控制

麦洛

微服务 sentinel spring cloud alibaba

Tensorflow实现Transformer模型将葡萄牙语翻译成英语

AI_robot

随机数环设想

waitmoon

Java

tensorflow实现CNN模型垃圾分类算法

AI_robot

NetCore的缓存使用详例

happlyfox

缓存 学习 netcore 3月日更

优秀软件设计的特征

这就是编程

看完这篇文章,你起码对分析视频卡顿有点思路了

小驰笔记

android 音视频 camera 引航计划

NodeJs 介绍

小风以北

nodejs 新特性

深入分析小程序运行环境框架原理

小风以北

小程序 编译原理 框架 工作原理

区块链底层Baas平台搭建,区块链政务底层平台开发

第9周作业

猫。

【无偿分享】史上最全Python学习大礼包 限24h删

sum56

Python Python基础 python入门 python学习 python资料

这可能是全网关于Camera慢动作录像(SlowMotion)介绍最全的文章了

小驰笔记

android 音视频 camera 引航计划

tensorflow实现两种图像风格融合 即神经风格迁移

AI_robot

如何在游戏中快速集成聊天功能

LeanCloud

游戏开发 即时通讯 聊天室 sdk

阿里天猫3面(Java研发):GC回收+Redis Hash算法+架构部署+秒杀等

钟奕礼

Java 编程 程序员 架构 面试

UUID不失精度,长度改进

waitmoon

Java uuid

推荐16款强大的Twitter视频下载器(2021精选)

科技猫

twitter 软件 网站 分享 视频下载

云图说|将源端MongoDB业务搬迁至华为云DDS的几种方式

华为云开发者联盟

mongodb 数据迁移 华为云文档数据库服务 DDS 文档数据库

理解reflect elem和value的一段测试代码

werben

Go 语言

Android 高通Camx架构学习 - 第1章

小驰笔记

android 音视频 camera 引航计划

  • 扫码添加小助手
    领取最新资料包
用户可以自定义Amazon Redshift数据库函数了_数据库_谢丽_InfoQ精选文章