SparkR概述

SparkR R包提供了一个轻量级的前端使用Apache火花从R . SparkR还支持使用MLlib分布式机器学习。

SparkR在笔记本

  • 对于火花2.0及以上,您不需要显式地通过sqlContext每一个函数调用的对象。

  • 火花2.2及以上,笔记本电脑不再进口SparkR默认情况下因为SparkR函数与类似的命名冲突的功能与其他流行的包。使用SparkR可以调用库(SparkR)在你的笔记本电脑。SparkR会话已经配置,和所有SparkR功能将与你连接集群使用现有的会话。

SparkR spark-submit工作

运行脚本,可以使用在砖SparkR spark-submit工作,与小代码修改。例如,看到的创建并运行一个spark-submit工作R脚本

创建SparkR DataFrames

您可以创建一个DataFrame从本地Rdata.frame从一个数据源,或者使用一个火花的SQL查询。

从本地Rdata.frame

最简单的方法来创建一个DataFrame是把当地的Rdata.frame成一个SparkDataFrame。具体我们可以使用createDataFrame并通过在当地Rdata.frame创建一个SparkDataFrame。像大多数其他SparkR函数一样,createDataFrame2.0语法改变了火花。你可以看到这样的例子在波纹管的代码片段。更多的例子,请参阅createDataFrame

图书馆(SparkR)df< -createDataFrame(忠实的)#显示DataFrame的内容发送到stdout(df)

使用API的数据源

一般的方法创建一个DataFrame从数据源read.df。这个方法取文件的路径加载和数据源的类型。SparkR支持阅读CSV、JSON、文本和拼花文件本身。

图书馆(SparkR)diamondsDF< -read.df(“/ databricks-datasets / Rdatasets /数据- 001 / csv / ggplot2 / diamonds.csv”,=“csv”,=“真正的”,inferSchema=“真正的”)(diamondsDF)

SparkR自动推断模式从CSV文件。

添加一个数据源连接器与火花包

通过火花包你可以找到数据源连接器Avro等流行的文件格式。作为一个例子,使用spark-avro包加载一个Avro文件。spark-avro包取决于您的集群的可用性图片的版本。看到Avro文件

先一个现有的data.frame火花DataFrame转换,并将其保存为一个Avro文件。

需要(SparkR)irisDF< -createDataFrame(虹膜)write.df(irisDF,=“com.databricks.spark.avro”,路径=“dbfs: / tmp / iris.avro”,模式=“覆盖”)

验证一个Avro文件保存:

%fsls/tmp/iris.avro

现在使用spark-avro包再读回数据。

irisDF2< -read.df(路径=“/ tmp / iris.avro”,=“com.databricks.spark.avro”)(irisDF2)

数据源API也可以用来保存DataFrames分成多个文件格式。例如,您可以保存DataFrame从前面的示例文件使用拼花write.df

write.df(irisDF2,路径=“dbfs: / tmp / iris.parquet”,=“铺”,模式=“覆盖”)
% fs ls dbfs: / tmp / iris.parquet

从引发SQL查询

您还可以创建SparkR DataFrames使用火花SQL查询。

# df早些时候注册为临时视图createOrReplaceTempView(irisDF2,“irisTemp”)
#创建一个只有“物种”组成的df列使用火花SQL查询物种< -sql(“从irisTemp选择物种”)

物种是一个SparkDataFrame。

DataFrame操作

火花DataFrames支持大量的结构化数据处理功能。这里有一些基本的例子。一个完整的列表中可以找到API文档

选择行和列

#进口SparkR包,如果这是一个新的笔记本需要(SparkR)#创建DataFramedf< -createDataFrame(忠实的)
#只选择“喷发”列(选择(df,df美元火山喷发))
#你还可以通过在列名作为字符串(选择(df,“爆发”))
#过滤器DataFrame只保留行与等待时间短于50分钟(过滤器(df,df美元等待<50))

分组和聚合

SparkDataFrames支持一些常用功能分组后聚合数据。例如你可以计算每一个等待时间的次数似乎在忠实的数据集。

((groupBy(df,df美元等待)))
#你还可以聚合得到的输出最常见的等待时间waiting_counts< -(groupBy(df,df美元等待))(安排(waiting_counts,desc(waiting_counts美元)))

列操作

SparkR提供了许多功能,可以直接应用于列数据处理和聚合。下面的例子展示了基本的算术函数的使用。

#转换从小时秒等待时间。#你可以分配一个新列在同一个DataFramedf美元waiting_secs< -df美元等待*60(df)

机器学习

SparkR暴露大部分MLLib算法。在引擎盖下,SparkR使用MLlib火车模型。

下面的例子展示了如何构建一个使用SparkR漠视高斯模型。进行线性回归,建立家庭“高斯”。运行逻辑回归,建立家庭“二”。当使用SparkML GLM SparkR自动执行一个炎热的编码分类特性,这样就不需要手动完成的。字符串和双类型特性之外,还可以配合在MLlib矢量特性,与其他MLlib组件的兼容性。

#创建DataFramedf< -createDataFrame(虹膜)#符合线性模型的数据集。模型< -全球语言监测机构(Sepal_Length~Sepal_Width+物种,数据=df,家庭=“高斯”)#模型系数类似的格式返回到R的本机全球语言监测机构()。总结(模型)

教程,请参阅SparkR毫升教程

附加的例子,请参阅在R DataFrames和表工作