.Net for Spark 實現WordCount應用及調試入坑詳解 1. 概述 iNeuOS雲端操作系統現在具備物聯網、視圖業務建模、機器學習的功能,但是缺少一個計算平臺產品。最近在調研使用什麼語言進行開發,並且研究實現的技術路線。iNeuOS全系使用C#/JS/CSS/PYTHON開發,所以優 ...
.Net for Spark 實現WordCount應用及調試入坑詳解
1. 概述
iNeuOS雲端操作系統現在具備物聯網、視圖業務建模、機器學習的功能,但是缺少一個計算平臺產品。最近在調研使用什麼語言進行開發,並且研究實現的技術路線。iNeuOS全系使用C#/JS/CSS/PYTHON開發,所以優先選擇C#實現計算平臺的開發,當然也不排除使用scala和python等語言。最近微軟發佈.Net for Spark組件,與 .NET Standard 2.0 相容,可以在 Linux、macOS 和 Windows 系統上使用,就像 .NET 的其餘部分一樣。在網上進行了調研,下圖展示了 .NET Core 與 Python、Scala 在 TPC-H 查詢集上的性能對比。如下圖:
在github上看了源代碼,代碼質量比較高。最近兩天進行了應用及測試,整體流程已經走通,感覺比較清爽。
2.系統環境
操作系統:Ubuntu 16.04
開發語言:.Net Core 2.2
計算框架:.Net for Spark
開發工具:VSCODE
測試工具:netcat
3.環境部署
3.1安裝 .Net Core 2.2
參見安裝過程:https://dotnet.microsoft.com/download/linux-package-manager/ubuntu16-04/sdk-current
3.2安裝 .Net for Spark及代碼實現
參見安裝過程:https://github.com/dotnet/spark/blob/master/docs/getting-started/ubuntu-instructions.md
Program.cs實現的代碼參見:https://github.com/dotnet/spark/blob/master/examples/Microsoft.Spark.CSharp.Examples/Sql/Streaming/StructuredNetworkWordCount.cs
3.3安裝 netcat
命令行:apt-get install netcat
4.開發調試
4.1啟動netcat
主要用於實時發送字元串,實現字元串統計。
命令行:nc -lk 9999
4.2啟動調試模式
在程式集目錄:HelloSpark/bin/Debug/netcoreapp2.2下。
命令行:spark-submit --class org.apache.spark.deploy.DotnetRunner --master local microsoft-spark-2.4.x-0.3.0.jar debug
不執行這個命令,在vscode調試的時候,會出現異常:[Exception] [JvmBridge] Connection refused 127.0.0.1:5567。
4.3啟動vscode調試
在main函數的第一行增加一行測試代碼:
args=new string[]{"localhost","9999"};
主要用於連接netcat服務,接收netcat發送過來的字元串,併進行字元串統計。如下圖:
4.4調試過程
打開“4.1啟動netcat”和“4.2啟動調試模式”視窗,netcat用於發送數據,調試模式視窗可以接收到數據併進行統計。如下圖:
5.應用發佈
把main函數內的測試代碼刪除掉,在工程目錄下執行命令:dotnet build,生成新的程式集。
在程式集目錄:HelloSpark/bin/Debug/netcoreapp2.2下執行命令:
命令行:spark-submit --class org.apache.spark.deploy.DotnetRunner --master local microsoft-spark-2.4.x-0.3.0.jar dotnet HelloSpark.dll localhost 9999
同樣在netcat視窗發送數據,結果如下圖:
6.項目合作
承接工業物聯網、大數據、工業互聯網項目。官方網站(iNeuOS):http://www.ineuos.net。
項目代碼下載:博客園下載