共用方式為


搭配 Azure Synapse Analytics 使用 R for Apache Spark (預覽版)

Azure Synapse Analytics 提供 Apache Spark 的內建 R 支援。 為此,資料科學家可以使用 Azure Synapse Analytics 筆記本來撰寫和執行其 R 程式碼。 這也包含 SparkR SparklyR 的支援 ,可讓使用者使用熟悉的 Spark 或 R 介面與 Spark 互動。

在本文中,您將瞭解如何搭配 Azure Synapse Analytics 使用 R for Apache Spark。

R 執行時間

Azure Synapse Analytics 支援 R 執行時間,其中包含許多熱門的開放原始碼 R 套件,包括 TidyVerse。 R 執行時間適用于所有 Apache Spark 3 集區。

若要深入瞭解每個執行時間上安裝的程式庫,您可以流覽下列頁面: - Azure Synapse Analytics 執行時間

建立和執行筆記本會話

Azure Synapse Notebook 是一個 Web 介面,可讓您建立包含即時程式碼、視覺效果和敘事文字的檔案。 筆記本是驗證想法和使用快速實驗從您的資料取得見解的絕佳位置。 筆記本也廣泛使用於資料準備、資料視覺效果、機器學習和其他巨量資料案例。

若要在 Synapse 筆記本中開始使用 R,您可以將語言選項 設定 SparkR (R) 來變更主要語言。

Screenshot of the R language option.

此外,您可以在一個筆記本中指定資料格開頭的語言 magic 命令,以使用多種語言。

%%sparkr
# Enter your R code here

若要深入瞭解 Azure Synapse Analytics 內的筆記本,您可以流覽如何 管理筆記本的 指南。

安裝套件

程式庫提供您可能想要包含在程式或專案中的可重複使用程式碼。 若要讓協力廠商或本機建置的程式碼可供您的應用程式使用,您可以在其中一個無伺服器 Apache Spark 集區或筆記本會話上安裝程式庫。

管理 R 工作區套件

在 Synapse 中,工作區套件可以是自訂或私人 R tar.gz 檔案。 您可以將這些套件上傳至您的工作區,稍後將它們指派給特定的無伺服器 Apache Spark 集區。 指派之後,這些工作區套件會自動安裝在對應集區上啟動的所有 Spark 集區會話上。

若要深入瞭解如何管理工作區程式庫,請參閱下列文章: - 管理工作區套件

管理 R 會話

執行互動式資料分析或機器學習時,您可以嘗試較新的套件,或可能需要 Apache Spark 集區上目前無法使用的套件。 使用者現在可以使用會話範圍套件來新增、管理及更新會話相依性,而不是更新集區設定。

  • 當您安裝會話範圍的程式庫時,只有目前的筆記本可以存取指定的程式庫。
  • 這些程式庫不會影響使用相同 Spark 集區的其他會話或作業。
  • 這些程式庫會安裝在基底執行時間和集區層級程式庫之上。
  • 筆記本程式庫的優先順序最高。
  • 會話範圍的 R 程式庫不會跨會話保存。 執行相關的安裝命令時,會在每個會話開始時安裝這些程式庫
  • 會話範圍的 R 程式庫會自動安裝在驅動程式和背景工作節點

例如,使用者可以從 CRAN 和 CRAN 快照集安裝 R 程式庫。 在下列範例中, Highcharter 是 R 視覺效果的熱門套件。 我可以使用下列命令,在 Apache Spark 集區中的所有節點上安裝此套件:

install.packages("highcharter", repos = "https://cran.microsoft.com/snapshot/2021-07-16/")

若要深入瞭解如何管理會話 R 程式庫,您可以流覽下列文章: 管理 R 會話套件

筆記本公用程式

Microsoft Spark 公用程式 (MSSparkUtils) 是內建套件,可協助您輕鬆執行一般工作。 您可以使用 MSSparkUtils 來處理檔案系統、取得環境變數、將筆記本鏈結在一起,以及使用秘密。 R Notebook 支援 MSSparkUtils。

若要開始使用,您可以執行下列命令:

library(notebookutils)
mssparkutils.fs.help()

若要深入瞭解支援的 MSSparkUtils 命令,請流覽下列文章: 使用 Microsoft Spark 公用程式

使用 SparkR

SparkR 是一種 R 套件,提供輕量前端以使用來自 R 的 Apache Spark。SparkR 提供分散式資料框架實作,支援選取、篩選、匯總等作業。SparkR 也支援使用 MLlib 的分散式機器學習。

從本機 R data.frame 建立 SparkR 資料框架

建立 DataFrame 最簡單的方式是將本機 R data.frame 轉換成 SparkDataFrame。 在此範例中,我們使用 as.DataFrame 並傳入本機 R 資料框架來建立 SparkDataFrame。

df <- as.DataFrame(faithful)

# Displays the first part of the SparkDataFrame
head(df)
##  eruptions waiting
##1     3.600      79
##2     1.800      54

使用 Spark 資料來源 API 建立 SparkR 資料框架

SparkR 支援透過 SparkDataFrame 介面在各種資料來源上作業。 從資料來源 read.df 建立 DataFrame 的一般方法是 。 這個方法會採用檔案要載入的路徑,以及資料來源的類型。 SparkR 支援原生讀取 CSV、JSON、文字和 Parquet 檔案。

# Read a csv from ADLSg2
df <- read.df('abfss://<container name>@<storage account name>.dfs.core.windows.net/avocado.csv', 'csv', header="true")
head(df)

使用 Spark SQL 建立 SparkR 資料框架

您也可以使用 Spark SQL 查詢來建立 SparkR DataFrame。

# Register this SparkDataFrame as a temporary view.
createOrReplaceTempView(df, "eruptions")

# SQL statements can be run by using the sql method
sql_df <- sql("SELECT * FROM eruptions")
head(sql_df)

機器學習

SparkR 會公開大部分的 MLLib 演算法。 在幕後,SparkR 會使用 MLlib 來定型模型。 若要深入瞭解支援哪些機器學習演算法,您可以流覽 SparkR 和 MLlib 的檔。

# Create the DataFrame
cars <- cbind(model = rownames(mtcars), mtcars)
carsDF <- createDataFrame(cars)

# Fit a linear model over the dataset.
model <- spark.glm(carsDF, mpg ~ wt + cyl)

# Model coefficients are returned in a similar format to R's native glm().
summary(model)

使用 SparklyR

SparklyR 是 Apache Spark 的 R 介面。 它提供使用熟悉 R 介面與 Spark 互動的機制。

若要建立 sparklyr 連接,您可以在 中使用 spark_connect() 下列連接方法。

spark_version <- "<enter Spark version>"
config <- spark_config()
sc <- spark_connect(master = "yarn", version = spark_version, spark_home = "/opt/spark", config = config, method='synapse')

下一步