在SQL Server 2016中介绍微软R服务

源自:http://www.sqlservercentral.com/articles/Microsoft/145393/

作者:tomakatrun2018/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服务的更多相关文章

  1. SQL Server 2016中In-Memory OLTP继CTP3之后的新改进

    SQL Server 2016中In-Memory OLTP继CTP3之后的新改进 转译自:https://blogs.msdn.microsoft.com/sqlserverstorageengin ...

  2. SQL Server 2016将内置R语言?

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:随着大数据成为一个BuzzWord,和大数据相关的技术也变得越来越火热,其中就包括R语 ...

  3. SQL Server 2016将内置R语言

    题记:随着大数据成为一个BuzzWord,和大数据相关的技术也变得越来越火热,其中就包括R语言.而据说SQL Server 2016将会内置R语言支持? R语言作为一个存在很久的语言,在大数据热炒之后 ...

  4. 数据库技术丛书:SQL Server 2016 从入门到实战(视频教学版) PDF

    1:书籍下载方式: SQL Server2016从入门到实战 PDF 下载  链接:https://pan.baidu.com/s/1sWZjdud4RosPyg8sUBaqsQ 密码:8z7w 学习 ...

  5. 第十五周翻译-《Pro SQL Server Internals, 2nd edition》

    <Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 55-58页 第三章 统计 SQL Se ...

  6. 第十二周翻译-《Pro SQL Server Internals, 2nd edition》

    <Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 专业SQL服务器内部 了解在引擎盖下发生 ...

  7. SQL Server 2016五大优势挖掘企业用户数据价值

    SQL Server 2016五大优势挖掘企业用户数据价值 转载自:http://soft.zdnet.com.cn/software_zone/2016/0318/3074442.shtml 3月1 ...

  8. SQL Server 2016原生支持JSON

    转载原地址: http://www.cnblogs.com/lyhabc/p/4747694.html SQL Server 2005 开始支持 XML 数据类型,提供原生的 XML数据类型.XML ...

  9. SQL Server系列之SQL Server 2016 中文企业版详细安装步骤(超多图)

    1. 下载地址 下载地址 :https://www.microsoft.com/en-us/server-cloud/products/sql-server-2016/ 官方技术文档:https:// ...

随机推荐

  1. Python数据分析Pandas库方法简介

    Pandas 入门 Pandas简介 背景:pandas是一个Python包,提供快速,灵活和富有表现力的数据结构,旨在使“关系”或“标记”数据的使用既简单又直观.它旨在成为在Python中进行实际, ...

  2. Shell cace条件语句

    cace条件语句,取相对应的多个值,进行输出. 语句:case语句:case $n in 回车\  值)回车\ 命令 :: 值)命令 esac case $1 in start) echo “启动” ...

  3. 剑指offer(50)数组中重复的数字

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

  4. FASM学习中的一些表格

    Size operator Registers Data directives Conditions(jmp助记符)

  5. CSS常用伪类

    css伪类 :after 在元素后面插入内容 :hover 鼠标移入时进行 :before 在元素前面插入内容 :link 未选中的链接 :active 点击后产生什么变化 :nth-child 匹配 ...

  6. jQuery validator plugin之Validator

    Validator.destroy() Destroys this instance of validator freeing up resources and unregistering event ...

  7. 在 jupyter 中添加菜单和自动完成功能

    在 jupyter 中添加菜单和自动完成功能 参考文档http://www.360doc.com/content/17/1103/14/1489589_700569828.shtmlhttp://to ...

  8. eclipse安装插件配置Android开发环境

    安卓版本与sdk的对应   转载自: https://blog.csdn.net/cx776474961/article/details/79501740 最近学习Android开发,电脑已有开发we ...

  9. MVC 深入讲解Routing _路由规则【八】

    一.客户端=>控制器 在项目中我们引用了system.web.routing, 如果第一个匹配成功了,那么后面的都不会再匹配. 1. routing的作用: 确定colltroller,确定ac ...

  10. HDU 2612 (2次BFS,有点小细节)

    Problem Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. L ...