翻译1-在SQL Server 2016中介绍微软R服务
在SQL Server 2016中介绍微软R服务
源自:http://www.sqlservercentral.com/articles/Microsoft/145393/
作者:tomakatrun,2018/09/14(首次出版:2016/09/15)
翻译:赖慧芳
译文:
R是一种统计编程语言,主要用于统计计算和分析、数据挖掘和机器学习,它是一种非常强大的图形和数据可视化工具。它是一个自由的软件环境,是跨平台的(UNIX、Windows、MacOS),大部分的库和包开发都是由社区工作驱动的。
在SQL Server 2016中提供了R服务,微软正在为更灵活的数据分析提供R语言,使共享数据更加容易,并克服内存(RAM)的限制。这意味着将R集成到SQL Server中,使得对更大的数据集、实时OLTP分析和任何类型的大数据分析(如Hadoop、Teradata和其他数据)的分析都比以前容易得多。
(r)积分
在SQL Server R集成之前,许多用户,以及许多组织,在克服成功数据分析的障碍方面遇到了不同的挑战。微软已经强调并克服了一些主要问题。随着R集成到SQL Server环境中,数据科学的知识现在可以更容易、更快速地共享,因为它从数据科学家转移到数据工程师和数据专员。这种卸载这项工作的能力也代表了生产力的提高,因为数据科学家现在可以专注于核心分析,缩短部署预测模型的时间,并促进实时分析。
现有的基础设施(SQL Server数据库、角色、访问、安全)也有助于实现结果,因为SQL Server中的R被构建为在企业规模上工作,并且能够处理大量的数据。R的使用将超越一个小的数据库,并帮助将数据引入云计算和数据在一起更紧密地联系在一起。最后,这个R环境的构建是为了更快更好地响应变化(在更快地准备新数据模型、部署和使用机器学习算法方面)。
产品族
微软在2015年4月收购了Revolution analytics。除了这次收购之外,两个版本的R引擎还在一起:为商业目的而为社区和革命R企业(abbrof:RRE)的革命R Open(abbrof:RRO)。
在收购之后,微软保持了几乎相同的革命,并成为了微软的开放市场。革命R企业成为SQL Server R服务(这是在SQL Server上的Windows操作系统的Microsoft R服务器的数据库版本)和Microsoft R服务器;两种产品,都已经在革命R企业中使用了。Microsoft R服务器(也称为Microsoft R服务器独立)主要用于在Hadoop或Teradata系统上使用Linux(Red Hat或SUSE Linux发行版),支持与Azure云的连接。
因此,微软R语言的产品系列可以作为以下产品:
微软R打开 微软R客户 微软R服务器 SQL Server R服务
微软R服务器的组件如下:
Microsft R打开
R Open是微软增强的R发行版,它是百分之百开源的。该版本与任何现有的R引擎完全兼容,使R代码与现有代码完全兼容。在使用数学内核库(MKL)进行矢量/矩阵的数学运算时,这个Microsoft R Open distribution具有额外的高性能多线程增强(无论是在Windows上还是在Linux平台上)。
这个版本与CRAN存储库完全兼容。GitHub包也可以在R Open中使用。不幸的是,R Open受到可用内存的限制,这意味着只有能够适应计算机内存的数据才能被处理。专有的标量算法和函数(撤销标量库)不会在R Open版本下运行(但是在Microsoft客户端和Microsoft Server版本中是可用的)。
R Open将在任何SQL Server 2016版上运行,除了使用工具的Express或Express。Microsoft R客户端/服务器只在企业版或开发版上运行。
微软R客户
R客户端版本是一个完全免费的版本,建立在微软R Open之上。数据科学家可以使用任何基于克兰/github的库,这一版本引入了强大的撤销标量库,允许重并行和多线程计算。撤销标量库是一个使用标量技术的库,它的专有功能用于并行计算。
对R客户端有一些限制。首先,内存仅限于本地内存,这意味着数据必须适合本地内存。标量函数可以使用并行计算,但是处理只局限于两个线程(不管计算机有更多的核心和支持多进程的操作)。所有的计算都局限于客户端功能:磁盘、ram和速度。
关于Microsoft R客户端的一个好处是,用户可以将计算操作推送到Microsoft R服务器或SQL Server R服务和用于Hadoop的R服务器,以获得更好的性能。关于R客户端的重要部分是,允许用户在不安装Microsoft R服务器的情况下仍然运行高性能分析,但仍然可以通过使用Microsoft R服务器的计算能力获得所有的好处。
Microsoft R客户端与以下版本的R服务器兼容:Linux的Microsoft R服务器,Teradata DB的Microsoft R服务器,Hadoop的Microsoft R服务器,Microsoft R HDInsight,以及两个版本的Microsoft R服务器——独立的和SQL Server R服务。
微软R服务器
Microsoft R服务器是微软R产品系列中最常用的R版本,特别是用于企业分析的目的。与R Open/R客户端版本一样,它支持所有的统计分析、数据挖掘和预测分析和机器学习,但也支持大数据。R服务器也与CRAN/Github/bio导体库存储库完全兼容,其功能的标量算法能够并行和多三次数据处理和计算,数据比服务器内存suze大得多。基于rrs的应用程序将能够使用ConnectR使用多个平台,并可以跨多平台部署(使用DeployR函数)。这个版本也提供了磁盘可伸缩性。
SQL Server R服务(数据库中的Microsft R服务器)
Microsoft SQL Server R服务本质上是Microsoft R服务器版本的数据库版本,它覆盖了大多数用于可伸缩和高性能环境的标量算法。内存和磁盘将由您的SQL Server实例管理。为了支持R的执行,将在本地安装一个额外的SQL Server服务,称为SQL Server可信Launchpad。另外,Microsoft R客户端能够在SQL Server和R服务器之间进行通信;有一点不同,部署和ConnectR函数将无法工作,因为它们是为其他目的而准备的。但是,正如已经说过的,在这个数据库版本中也可以使用标量算法。
安装
Microsoft R服务器总是作为一个独立的版本单独安装。因此,一旦你安装了SQL Server 2016,你也需要安装R服务器,如果你想让它安装在你的服务器上的话。
SQL Server R服务安装将作为R服务(在数据库中)的特性选择提示。
在安装之前(在数据库或服务器版本的两种情况下),您需要同意安装R Open,这是所有版本的基本分布。
在安装服务器版本或数据库版本之后,将安装并提供额外的撤销标量库函数。
R客户端和R Open可从微软的MSDN网站下载。R Open可在微软的微软网站(https://mran.microsoft.com/)和微软R客户端下载站点(aka.ms/rclient/下载)的R客户端使用。对于R客户端,您还必须下载IDE环境和所有附带的R库(用于工作)。对于IDE环境,我推荐Visual Studio的R工具。
在这篇文章中,我们将重点讨论SQL Server R服务,作为Microsoft R服务器的数据库版本。以及如何处理外部存储过程。
安装后期
一旦您成功地安装了SQL Server 2016,并使用了数据库R服务,就需要完成一些额外的操作。这样做的用户必须在服务器上有管理员权限。
在SSMS中,您需要检查配置是否“外部脚本启用”。
EXEC SP_CONFIGURE 'external scripts enabled';
GO
您需要将runvalue设置为1。默认情况下,它被设置为0,因此执行以下操作将改变这一点:
-- Enable execute external script
EXEC SP_CONFIGURE 'external scripts enabled', 1;
GO
RECONFIGURE;
GO
在此之后,您将需要重新启动MSSQLServer实例。在服务中,还要检查SQL Server Launchpad(MSSQLLaunchpad)正在运行。
在此之后,您应该能够使用T-SQL开始在SSMS中使用R。
使用spexecute外部脚本运行R代码
有了SQL Server 2016,一个新的外部存储过程,spexecuteexternal alscript,是可用的。目前,它只用于运行基于R的脚本,但在将来,我们可能也会得到其他语言的支持。Python被认为是其中之一。这个存储过程在一个外部位置执行所提供的脚本——在这个例子中是R服务。
为了说明这个过程是如何工作的,让我们看一看我们想要进行统计分析的数据集:
USE WideWorldImporters;
GO
SELECT
SUM(il.Quantity) AS InvoiceQ
,SUM(il.ExtendedPrice) AS InvoiceV
,c.CustomerID
,c.CustomerCategoryID
FROM
sales.InvoiceLines AS il
INNER JOIN sales.Invoices AS i
ON il.InvoiceID = i.InvoiceID
INNER JOIN sales.Customers AS c
ON c.CustomerID = i.CustomerID
GROUP BY
c.CustomerID
,c.CustomerCategoryID
这个查询返回widecustomer dimporter数据库中每个客户的发票的价值和数量。为了找到更多的客户洞察,我们希望了解客户类别和每个客户的发票价值之间的相关性。为了做到这一点,我们将把来自SQL Server数据库的数据与相应的R脚本推送到R服务器。
代码如下:
EXECUTE sp_execute_external_script
@language = N'R'
,@script = N' #Calculating correlations between two variables
df <- data.frame(value_of_correlation = cor(Customers_by_invoices$InvoiceV, Customers_by_invoices$CustCat,
use="complete.obs", method="spearman"))
OutputDataSet<-df'
,@input_data_1 = N'SELECT
SUM(il.Quantity) AS InvoiceQ
,SUM(il.ExtendedPrice) AS InvoiceV
,c.CustomerID AS Customer
,c.CustomerCategoryID AS CustCat
FROM sales.InvoiceLines AS il
INNER JOIN sales.Invoices AS i
ON il.InvoiceID = i.InvoiceID
INNER JOIN sales.Customers AS c
ON c.CustomerID = i.CustomerID
GROUP BY
c.CustomerID
,c.CustomerCategoryID'
,@input_data_1_name = N'Customers_by_invoices'
WITH RESULT SETS ((
value_of_correlation FLOAT(20)
));
GO
该查询的结果以SSMS中的一列形式呈现。
这个执行的结果可以存储在SQL Server中的表或变量中,以便以后的用途和分析。
spexecute外部脚本的过程使用以下参数:
@language——定义外部语言的名称。在本文的时候,只支持R语言。 @script-声明R脚本,它将用于R服务器中的数据计算和数据分析。@script参数必须有定义的输入和输出数据集,因此R服务器理解输入的数据以及计算的结果。输入数据集是用参数@inputdata1及其数据集的名称来定义的
@inputdata1name,而输出数据是R脚本返回的结果。计算结果必须始终以数据框架的形式呈现。 @inputdata1-交易SQL是这个参数的直接值,它只能容纳一个SELECT语句。Select list是@script参数也将用于分析的内容,因此要格外精确地在Select语句中声明什么。 @inputdata1name——是通过在参数@inputdata1中交易SQL而返回的结果的名称,并用于@script参数中的表示。

因此,这个过程只返回一个带有一个值的列,这必须与@script参数中的输出数据定义一致。 R脚本只是简单的一行代码:
df <- data.frame(value_of_correlation = cor(Customers_by_invoices$InvoiceV, Customers_by_invoices$CustCat, use="complete.obs", method="spearman"))
OutputDataSet<-df
它使用两个变量:客户通过发票$InvoiceV,客户通过发票$CustCat来计算两个变量之间的长矛相关系数。结果以可变df的格式存储在一个名为valueof相关性的数据帧的格式中。我用了斯皮尔曼系数因为一个变量是序数和一个间隔;如果两者都是间隔的话,我可以用皮尔逊相关系数。
总结
使用R服务和R服务器可以通过快速数据计算和很少(如果有的话)数据移动带来更好的数据洞察力。特别是在R服务器上,性能将得到增强,数据集的大小将不再受内存限制。这个工具对于任何组织和企业环境都是完美的,它希望缩短在以后的部分中创建日常和定制统计分析的时间,我们也将看到R作为一个统计和预测工具可以被使用。
作者:tomakatrun(tomaz.kastrun@gmail.com) Twitter:@tomaz_tsql 博客:http://tomaztsql.wordpress.com
资源:
01_Introduction_to_Microsoft_R_Service_MSSQL2016.sql
翻译1-在SQL Server 2016中介绍微软R服务的更多相关文章
- SQL Server 2016中In-Memory OLTP继CTP3之后的新改进
SQL Server 2016中In-Memory OLTP继CTP3之后的新改进 转译自:https://blogs.msdn.microsoft.com/sqlserverstorageengin ...
- SQL Server 2016将内置R语言?
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:随着大数据成为一个BuzzWord,和大数据相关的技术也变得越来越火热,其中就包括R语 ...
- SQL Server 2016将内置R语言
题记:随着大数据成为一个BuzzWord,和大数据相关的技术也变得越来越火热,其中就包括R语言.而据说SQL Server 2016将会内置R语言支持? R语言作为一个存在很久的语言,在大数据热炒之后 ...
- 数据库技术丛书:SQL Server 2016 从入门到实战(视频教学版) PDF
1:书籍下载方式: SQL Server2016从入门到实战 PDF 下载 链接:https://pan.baidu.com/s/1sWZjdud4RosPyg8sUBaqsQ 密码:8z7w 学习 ...
- 第十五周翻译-《Pro SQL Server Internals, 2nd edition》
<Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 55-58页 第三章 统计 SQL Se ...
- 第十二周翻译-《Pro SQL Server Internals, 2nd edition》
<Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 专业SQL服务器内部 了解在引擎盖下发生 ...
- SQL Server 2016五大优势挖掘企业用户数据价值
SQL Server 2016五大优势挖掘企业用户数据价值 转载自:http://soft.zdnet.com.cn/software_zone/2016/0318/3074442.shtml 3月1 ...
- SQL Server 2016原生支持JSON
转载原地址: http://www.cnblogs.com/lyhabc/p/4747694.html SQL Server 2005 开始支持 XML 数据类型,提供原生的 XML数据类型.XML ...
- SQL Server系列之SQL Server 2016 中文企业版详细安装步骤(超多图)
1. 下载地址 下载地址 :https://www.microsoft.com/en-us/server-cloud/products/sql-server-2016/ 官方技术文档:https:// ...
随机推荐
- EasyUI出现多条边框重合的问题
比如在 下面使用一个datagrid表格,可能出现某几条边框重合的问题,这种情况需要在div一层的panel添加"border:false"属性,datagrid不做处理即可
- Python+OpenCV图像处理(十五)—— 圆检测
简介: 1.霍夫圆变换的基本原理和霍夫线变换原理类似,只是点对应的二维极径.极角空间被三维的圆心和半径空间取代.在标准霍夫圆变换中,原图像的边缘图像的任意点对应的经过这个点的所有可能圆在三维空间用圆心 ...
- kubernetes1.5新特性(二):支持Photon卷插件
在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储. 从图中可以看到结构体PodSpec有个属性是Volumes,通过这个V ...
- Quartz.net定时任务框架的使用
一:Nuget添加Quartz.net和Topshelf 二:新建HelloJob类继承IJob public class HelloJob : IJob { pub ...
- 面试常问Spring IOC,不得不会。
广义的 IOC IoC(Inversion of Control) 控制反转,即“不用打电话过来,我们会打给你”. 两种实现: 依赖查找(DL)和依赖注入(DI). IOC 和 DI .DL 的关系( ...
- Dockerfile构建容器---构建本地tomcat
前序 这是我第一次摸索.做个笔记记录一下. 首先准备好tomcat与jdk解压到与Dockerfile同级的目录下, 构建文件命名必须为Dockerfile, 为什么同级, 因为build的时候会默认 ...
- vi中换行、翻页和查找功能
vi时,按ESC进入Command模式, 1. 移动光标命令:j 向下移动一行:k 向上移动一行:h 向左移动一个字符:l 向右移动一个字符:对于 j.k.l和h键,命令前加数字,移动多行:如 3j, ...
- win8获取保存的wlan密码方法
使用netsh wlan show profile * key=clear 方法查找所有的保存的wifi 使用 netsh wlan show profile name="wifi名字&qu ...
- CentOS 7安装后的配置
一.设置IP地址.网关DNS 说明:CentOS 7.x默认安装好之后是没有自动开启网络连接的,所 以需要我们自己配置. 在命令行输入#vi /etc/sysconfig/network-scrip ...
- JAVA-抽象类/类继承
1.当一个类继承一个抽象类的时候,必须实现抽象类的方法.如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类. 2.被final修饰的类为最终类,不能被继承.而类前面如果有abstr ...