.NET for Apache Spark 入門演練
微軟官方檔案: .NET for Apache Spark 入門 | Microsoft Learn
注意:由于本次在windows平臺下進行演練,以下在未標注作業系統平臺處,默認為windows,
1. 環境準備
推薦安裝工具: visual studio 2019, 7-zip 或 bandzip 解壓工具
1.1 安裝.Net
推薦安裝 visual studio 2019 作為編碼IDE,同時它會自動安裝 .net 開發環境,
在windows開發環境下,安裝了visual studio 2019或者其它版本時已經安裝了.net開發環境,故不做詳細說明,
在命令列輸入以下命令驗證是否有.net環境:
dotnet --version
列印出版本資訊,則進行下一步,
1.2 安裝 Java
安裝 java 8 , 安裝完成后可使用如下命令進行測驗
java , javac , java -version
列印出版本資訊,則進行下一步,
1.3 安裝 Apache Spark
-
本文使用 spark-3.0.1-bin-hadoop2.7.tgz,
-
官網下載地址:Downloads | Apache Spark
-
鏡像站: Index of /dist/spark/spark-3.0.1 (apache.org)
-
下載完成后,使用7-zip提取嵌套的 .tar檔案,然后解壓 .tar檔案
-
取消7-zip界面的 "提取到" 勾選框
設定環境變數
# 這里的 C:\bin 替換為自己的安裝目錄
setx /M HADOOP_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
setx /M SPARK_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
setx /M PATH "%PATH%;%HADOOP_HOME%;%SPARK_HOME%bin"
環境變數設定成功后,**打開新的命令列 **運行以下命令
spark-submit --version
如果列印出版本資訊,則安裝成功,進行下一步,
1.4 安裝.NET for Apache Spark
- 從 GitHub Releases · dotnet/spark (github.com) 下載, 這里下載 Microsoft.Spark.Worker.net461.win-x64-2.1.1.zip 版本,因為本文是基于 .NetFramework 演練,
- 使用7-zip提取嵌套的 .tar檔案,然后解壓 .tar檔案
- 取消7-zip界面的 "提取到" 勾選框
1.5 安裝 WinUtils(僅限 Windows)
.NET for Apache Spark 要求與 Apache Spark 一起安裝 WinUtils, 下載 winutils.exe ,然后,將 WinUtils 復制到 C:\bin\spark-3.0.1-bin-hadoop2.7\bin,
設定環境變數
# 這里的 C:\bin 替換為自己的安裝目錄
setx /M DOTNET_WORKER_DIR C:bin\Microsoft.Spark.Worker-2.1.1
2 撰寫演練實體
在本地新建一個文本,輸入如下內容
Hello World
This .NET app uses .NET for Apache Spark
This .NET app counts words with Apache Spark
打開 visual studio 2019,選擇 .NetFramework,創建控制臺程式,
引入 NuGet 包:Microsoft.Spark,默認最新版本2.1.1
在 Progarm.cs 檔案中輸入以下代碼
var inputTxt = @"C:\Users\Administrator\Desktop\新建文本檔案.txt";
SparkSession spark = SparkSession
.Builder()
.AppName("word_count_sample")
.GetOrCreate();
// Create initial DataFrame
DataFrame dataFrame = spark.Read().Text(inputTxt);
// Count words
DataFrame words = dataFrame
.Select(Functions.Split(Functions.Col("value"), " ").Alias("words"))
.Select(Functions.Explode(Functions.Col("words"))
.Alias("word"))
.GroupBy("word")
.Count()
.OrderBy(Functions.Col("count").Desc());
// Show results
words.Show();
// Stop Spark session
spark.Stop();
編譯輸出,
執行,輸入如下命令運行
spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local microsoft-spark-3-0_2.12-2.1.1.jar ConsoleApp1.exe
- spark-submit 提交給spark執行
- --calss 執行程式
- --master 本地還是遠程倉庫,選local, 然后 指定 microsoft-spark 版本,然后 指定用戶程式
這里有個注意的地方,NuGet下載下來的包,在編譯輸出目錄下會有4個jar包

- microsoft-spark-2-4_2.11-2.1.1.jar
- microsoft-spark-3-0_2.12-2.1.1.jar
- microsoft-spark-3-1_2.12-2.1.1.jar
- microsoft-spark-3-2_2.12-2.1.1.jar
這里選擇第二個 microsoft-spark-3-0_2.12-2.1.1.jar,只有這個能運行成功 ,其它3個應該是 .netcore平臺下的,
執行結果如下:

說明第一次演練成功!
本文來自博客園,作者:宣君,轉載請注明原文鏈接:https://www.cnblogs.com/ycit/p/16880620.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531775.html
標籤:.NET技术
