作者:Tim Miller,Teradata首席软件架构师
在这个系列博客的篇,我们介绍了R语言和Python工程师们使用Teradata Vantage平台的两种方法。我们还分析了这项应用的重要性,并介绍了如何以更高的水平来使用这两项技术。在这篇文章里,我们将关注客户端的语言、以及R语言和Python的工具包——tdplyr和teradataml。
在Vantage平台外部运行R语言和Python命令时,Tetadata会提供开源工具包和原生语言的SQL驱动程序来提供接口,使用Vantage平台上可用的功能。此外,这些工具包是建立在已经被大家所熟知的、已有的R语言和Python工具包之上的,所以有可能工程师们现在已经使用过了这些工具包;这样一来,我们可以尽可能地保证能够无缝切换到Vantage平台。
基于这些方法,用户可以将原生语言的SQL驱动程序加入到他们的R语言和Python设置中,和Teradata两个开源数据库之一结合使用,即面向R语言的tdplyr和面向Python的teradataml。这两个工具包可以提供数据库环境、连接和管理方面通用的功能。而重要的是,这些工具包能帮助工程师在本地环境使用R语言数据框架或pandas数据框架,但实际上却指向Vantage中存储的表格或视图。这就意味着不再需要在客户端和Vantage环境中来回迁移数据,只需要移动元数据或一些小型的数据样本。
此外,这两个工具包都能提供从R语言或Python到Vantage机器学习、图表和SQL引擎功能的接口。它们向R语言或Python语言工程师提供了满分的算法,能够直接在Vantage平台上运行,不管是表现还是稳定性都能达到解决用户使用案例的需求、并且能够适应呈指数增长的数据量产生的需求。接下来,我们就来介绍这两个开源工具包。
Teradata面向R/Python语言的 SQL驱动器能帮助以R/Python语言书写的程序连接到Vantage平台。基于通用的goSQL驱动器,Teradata面向R/Python语言的 SQL驱动器比同类型的ODBC或JDBC量级更轻,能够通过R/Python语言执行SQL命令,这种便捷程度是前所未有的。此外,这些驱动器还能够支持Teradata的快速加载协议,可用于并行地将大量的本地数据批量传输到Vantage平台。
正如其名,tdplyr是基于的R语言工具包dplyr,这可能是在数据管理和数据预备时被使用得广泛的R语言工具包。R语言用户可以基于变量名进行选择、基于变量值来选择数据行、添加由已有的变量通过函数计算而产生的新变量、将多个数值进行汇总并缩减,或者通过dplyr的变量进行数据行的移动等。这些功能都可以和分组等功能自然地组合使用,通过SQL可以非常方便地使用这种功能。此外,dplyr的组合使用工具包dbplyr可以提取这些变量来对应数据库内的工具表,管理本地数据框架所使用的R语言代码可以全部原原本本地应用于tdplyr。
这里的界面外观和管理常规的R语言数据框架很相似。除了数据框架之外,还使用了tibble来在Vantage的表格、视图或查询中代表数据。Tdplyr和dplyr用于远程获取或管理tibble的函数都会被转化成对应的SQL命令,通过Teradata用于R语言的SQL驱动器在Vantage平台上执行。除非接到明确的请求,那么只有一些数据子集和/或元数据或从Vantage平台上进行恢复;这些请求包括复制一个远程tibble到本地的R数据框架,这会造成大规模的数据迁移。
此外,tdplyr还提供R到Vantage平台上分析功能的接口,它们和在R语言中的呈现几乎是完全一致的 – 这些函数的命名可能不同,但参数会尽可能地和R语言中的函数签名保持接近。
Python语言的使用者对Pandas Python工具包比较熟悉,teradataml工具包是基于pandas数据框架对象的概念和语法,通过创建teradataml数据框架对象的方式来构建的。Teradataml数据框架是Python用户对数据库对象的参照,可以代表VantageSQL引擎中的一个表格、视图或查询。
Teradataml数据框架的界面外观和Python内的pandas数据框架相似,teradataml程序库可以提供API接口,来存取或管理teradataml数据框架。这些函数会生成SQL请求,并在Teradata面向Python语言的SQL驱动器的连接下,在Vantage平台上执行。Teradataml工具包使用TeradataSQLAlchemy,是一种通过SQLAlchemy的同属性语言接口进行实施的手段,可以提供更强大的数据探索和数据准备方面的支持。
SQLAlchemy将数据库看做是一个关系型代数引擎,而不仅仅是一组表格的集合。他的对象-关系图谱(ORM)会描绘Python类和数据库中特定的pandas数据框架,不仅可以支持通过表格、还可以通过其他的选择命令语句来选择数据行。所有的对象都可以通过所谓的互补导向的方式,被组织成一个更大的架构;“我们不会通过所谓的一堆自动化操作来隐藏SQL和对象的关系详情,而是会将所有处理过程全部在一个组合式、透明的工具里展现出来”,这就给Python开发者提供了完全的控制能力。
而至于tdplyr,只有数据子集或原数据会从Vantage平台上恢复,除非用户明确要求将数据转移至客户。例如,需要复制teradataml数据框架到本地的pandas数据框架,这就会造成大规模的数据迁移。同样的,teradataml还提供从个Python到Vantage平台上分析功能的接口,尽可能地使用和Python接近的函数签名。
这是我们三篇系列博客的第二篇。在第三篇文章中,我们将会更加深入地探索通过R和Python语言使用Vantage平台的第二种方法——服务器端的语言和工具包。
来源 https://mp.weixin.qq.com/s/ltiSfczGMGgi-kmQiFcgyg