SparkR概述

SparkR R包提供了一個輕量級的前端使用Apache火花從R . SparkR還支持使用MLlib分布式機器學習。

SparkR函數引用

你可以找到最新的SparkR函數引用spark.apache.org

您還可以查看功能幫助R筆記本或者RStudio後導入SparkR包。

嵌入式R文檔

SparkR在筆記本

  • 對於火花2.0及以上,您不需要顯式地通過sqlContext每一個函數調用的對象。

  • 火花2.2及以上,筆記本電腦不再進口SparkR默認情況下因為SparkR函數與類似的命名衝突的功能與其他流行的包。使用SparkR可以調用庫(SparkR)在你的筆記本電腦。SparkR會話已經配置,和所有SparkR功能將與你連接集群使用現有的會話。

SparkR spark-submit工作

運行腳本,可以使用在磚SparkR spark-submit工作,與小代碼修改。

創建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和表工作