.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


       項目代碼下載:博客園下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM