SQL server 2016 中的 Microsoft R 服务简介

 

SQL server 2016 中的 Microsoft R 服务简介

 Tomaž Kaštrun, 2018/09/14 (首次出版: 2016/09/15)

R 是一种统计编程语言, 主要用于统计计算和分析, 数据挖掘和机器学习, 它是一个非常强大的工具, 图形和数据可视化。它是一个自由的软件环境, 是跨平台 (UNIX、Windows、MacOS), 大部分的库和包开发都是由社区努力推动的。

通过 SQL Server 2016 中提供的 r 服务, Microsoft 正在使 R 语言可用于更灵活的数据分析, 使共享数据洞察更加容易, 并克服内存 (RAM) 限制。这意味着 R 与 SQL Server 的集成使得对更大的数据集、实时 OLTP 分析和任何类型的大型资料分析 (如 Hadoop、Teradata 等文档系统) 的分析比以往任何时候都容易得多。

R 集成

在 SQL Server R 集成之前, 许多用户以及许多组织在克服成功数据分析的障碍方面遇到了不同的挑战。 微软已经强调并克服了一些主要问题。随着 R 集成到 SQL Server 环境中, 数据科学的知识现在可以在从数据科学家到数据工程师和数据管理员的移动中更容易和更快地共享。这种卸载此项工作的能力也代表了生产率的提高, 因为数据科学家现在可以专注于核心分析, 缩短部署预测模型的时间, 并促进实时分析。

现有的基础结构 (SQL Server 数据库、角色、访问、安全性) 也有助于实施结果, 因为 SQL Server 中的 R 是构建在企业规模上的, 可以处理大量数据。使用 R 将会超出一个小的数据库, 并有助于使数据在云中和内部的数据更紧密地结合在一起。 最后, 此 R 环境是为了更快、更好地响应更改而构建的 (在更快地准备新数据模型、部署和利用机器学习算法方面)。

产品家族

革命分析是微软在2015年4月获得的。随着这一收购, R 引擎的两个版本一起来: 革命 R 开放为社区和革命 R 企业为商业目的。

 

收购后, 微软保持了革命的开放几乎相同, 它成为微软 R 开放。革命 R 企业成为了 SQL 服务器 R 服务 (这是微软 r 服务器的数据库版本在 SQL 服务器上的 Windows 操作系统) 和微软 R 服务器;二个产品, 在革命 R 企业中已经是可利用的。微软 R 服务器 (也称为微软 R 服务器独立) 主要是为 linux (红帽或 SUSE linux 发行) 在 Hadoop 或 Teradata 系统上支持连接到 Azure 云。

因此, microsoft R 语言的产品系列可作为以下产品提供:

·微软 R 开放

·微软 R 客户端

·微软 R 服务器

· SQL Server R 服务

Microsoft R 服务器的组件如下所列:

Microsft R 打开

是微软增强的 R 发行版本, 它是100% 开源。此版本与任何现有的 R 引擎完全兼容, 也使 R 代码与现有代码完全兼容。在使用数学内核库 (MKL) 进行基于向量/矩阵的数学运算时, Microsoft R Open 分发具有额外的高性能多线程增强功能 (无论是在 Windows 还是在 Linux 平台上)。

此版本与莓存储库完全兼容。GitHub 包也可以在 R 打开的情况下使用。不幸的是, R 打开受可用内存的限制, 这意味着只有可以容纳到计算机内存中的数据才能被处理。专有的洁算法和函数 (RevoScaleR 库) 不会在 R 打开版本下运行 (但在 microsoft 客户端和 microsoft 服务器版本中可用)。

R 打开将运行在任何 SQL server 2016 版, 除了在快递或快递工具。Microsoft R 客户端/服务器将仅在企业版或开发人员版本上运行。

微软 R 客户端

R 客户端版本是一个100% 免费版本, 内置在微软 R 打开。 一个数据科学家可以使用任何莓/GitHub 库, 本版介绍了强大的 RevoScaleR 库, 允许重并行化和多线程计算。RevoScaleR 库是利用洁技术及其专有功能进行并行计算的图书馆。

R 客户端有一些限制。首先, 内存仅限于本地内存, 这意味着数据必须适合本地内存。洁函数可以使用并行计算, 但处理仅限于两个线程 (无论计算机具有更多内核和支持多威胁操作)。所有计算都限于客户端功能: 磁盘、ram 和速度。

微软 R 客户端的一个好处是, 用户可以将计算操作推到 Microsoft R 服务器或 SQL Server R 服务以及 Hadoop 的 R 服务器上以实现更好的性能。R 客户端的重要部分是, 允许用户仍然运行高性能分析, 而不需要在本地安装 Microsoft R 服务器, 但仍然可以使用 microsoft R 服务器的计算能力获得所有好处。

microsoft R 客户端与以下几种类型的 R 服务器兼容: 微软 R 服务器为 Linux, 微软 R 服务器为 Teradata DB, 微软 R 服务器为 Hadoop, 微软R HDInsight 并且微软R 服务器的两个版本-独立和 SQL 服务器 R 服务。

Microsoft R 服务器

Microsoft R 服务器是 Microsoft R 产品系列中最常用的 R 版本, 特别是用于企业分析的目的。像 R 开放/R 客户端版本, 它支持所有的统计分析, 数据挖掘和预测分析与机器学习, 但大数据以及。R 服务器也完全兼容莓/Github/Bioconductor 库存储库, 其功能的洁算法可以并行和多威胁数据处理和计算, 数据比服务器内存苏西大得多。 基于 R 的应用程序将能够使用 ConnectR 的多个平台, 并且可以跨多平台部署 (使用 DeployR 函数)。此版本还提供磁盘可伸缩性。

SQL Server R 服务 (数据库中的 Microsft R 服务器)

Microsoft SQL Server R 服务本质上是数据库版本的 Microsoft R 服务器版本, 它涵盖了大多数洁算法, 可扩展和高性能的环境。内存和磁盘将由您的 SQL Server 实例管理。为支持 R 执行, 将在本地安装一个附加的 SQL Server 服务, 称为 SQL Server 受信任的启动器。此外, Microsoft R 客户端还能够在 SQL Server 和 R 服务器之间进行通信;DeployR 和 ConnectR 的功能稍有差别, 因为它们是为其他目的而准备的。但是, 正如已经说过的, 洁算法也将在这个数据库版本中可用。

安装

Microsoft R 服务器始终单独安装为独立版本。因此, 一旦您安装了 SQL Server 2016, 您将需要安装 R 服务器, 如果您希望它安装在您的服务器上。

SQL Server R 服务安装将被提示为作为 R 服务 (在数据库中) 的功能选择。

在安装之前 (在数据库或服务器版本的两种情况下), 要求您同意安装 R 打开, 这是所有版本的基本分发。

安装服务器版本或数据库版本后, 将安装并提供其他 RevoScaleR 库函数。

R 客户端和 R 打开可从 Microsoft MSDN 网站下载。R 开放可在 MRAN 微软网站 (https://mran.microsoft.com/) 和 R 客户端从微软 R 客户端下载网站 (又名: ms/rclient/下载)。对于 R 客户端, 您还必须下载 IDE 环境和所有随附的 R 库 (工作需要)。对于 IDE 环境, 我建议为 Visual Studio 提供 R 工具。

在本文中, 我们将重点讨论 SQL Server R 服务, 作为 Microsoft R 服务器的数据库版本。以及如何处理外部存储过程。

安装后

一旦通过数据库 R 服务成功地安装了 SQL Server 2016, 则需要完成一些其他操作。执行此操作的用户必须在服务器上具有管理员权限。

在 SSMS 中, 您将需要检查 "外部脚本启用" 的配置。

 

您需要将 run_value 设置为1。默认情况下, 它设置为 0, 因此执行以下操作将更改:

 

之后, 您将需要重新启动 MSSQLServer 实例。在 "服务" 中, 还要检查 SQL Server 启动板 (MSSQLLaunchpad) 是否正在运行。

在此之后, 您应该能够开始使用 SSMS 中的 R 与 t-sql。

使用 sp_execute_external_script

在 SQL Server 2016 中运行 R 代码一个新的外部存储过程 sp_execute_external_script 可用。目前, 它仅用于运行基于 R 的脚本, 但将来我们可能还会获得对其他语言的支持。Python 被认为是一个将被包括在内。此存储过程在外部位置执行提供的脚本-在这种情况下是 R 服务。

为了显示此过程的工作原理, 让我们来看一看我们想进行统计分析的数据集:

此查询正在返回 WideWorldImporters 数据库中每个客户的发票的价值和数量。 为了找到更多的客户洞察力, 我们想看看每个客户的客户类别和发票值之间的相关性。为此, 我们将使用附带的 r 脚本将数据从 SQL server 数据库推送到 R 服务器。

代码如下所示:

此查询的结果以列在 SSMS 中的形式显示。

此执行的结果可以存储在 SQL Server 中的表或变量中, 以便以后使用和分析。

过程 sp_execute_external_script 使用以下参数:

· @language-定义外部语言的名称。在本文的时候仅支持 R 语言。

· @script 声明的 R脚本将用于 R 服务器中的数据计算和数据分析。@script 参数必须定义输入和输出数据集, 因此 R 服务器可以了解数据的内容以及计算结果。输入数据集定义为参数 @input_data_1 及其数据集的名称 @input_data_1_name, 而输出数据则是 R 脚本返回的结果。计算结果必须始终以数据帧的形式呈现。

· @input_data_1 处理 SQL 是此参数的直接值, 它只能保存一个 SELECT 语句。选择列表是 @script 参数也将用于分析的内容, 因此在 select 语句中所陈述的内容要格外精确。

· @input_data_1_name-是在参数 @input_data_1 中处理 SQL 返回的结果的名称, 用于在 @script 参数中进行演示。

因此, 此过程只返回一列, 其中一个值必须与 @script 参数中的输出数据定义一致。

R 脚本只是简单的单行代码:

这使用两个变量: Customers_by_invoices $ InvoiceV, Customers_by_invoices $ CustCat 计算两个变量之间的长矛相关系数。结果以具有列名 value_of_correlation 的数据帧的格式存储在可变 df 中。我使用了长矛系数, 因为一个变量是序号和一个区间;如果两者都是间隔时间, 我可以使用皮尔逊相关系数。

结论

使用 R 服务和 R 服务器提供了更好的数据洞察力和快速的数据计算, 很少 (如果有的话) 数据移动。特别是在 R 服务器上, 性能将得到增强, 数据集的大小将不再受内存的限制。此工具对于任何类型的组织和公司环境都是完美的, 希望缩短在以后的部分中创建每日和自定义统计分析的时间, 我们还将看到 R 作为统计和预测工具可以使用的区域。

作者: Tomaž Kaštrun ([email protected] tomaz kastrun@gmail com)

Twitter: @tomaz_tsql

博客: http://tomaztsql.wordpress.com

资源:01_Introduction_to_Microsoft_R_Service_MSSQL2016. sql

翻译人:黄淑萍

猜你喜欢

转载自www.cnblogs.com/hsp9/p/9655957.html