1. 程式人生 > >.Net for Spark 實現 WordCount 應用及除錯入坑詳解

.Net for Spark 實現 WordCount 應用及除錯入坑詳解

.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。


       專案程式碼下載:部落格園