.Net for Spark 实现 WordCount 应用及调试入坑详解

论坛 期权论坛 期权     
移动开发和人工智能   2019-6-30 04:54   1693   0
[h1]1.    概述[/h1]
     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上看了源代码,代码质量比较高。最近两天进行了应用及测试,整体流程已经走通,感觉比较清爽。
[h1]2.系统环境[/h1]
        操作系统:Ubuntu 16.04
         开发语言:.Net Core 2.2
         计算框架:.Net for Spark
         开发工具:VSCODE
         测试工具:netcat
[h1]3.环境部署[/h1]
[h2]      3.1安装 .Net Core 2.2[/h2]          参见安装过程:https://dotnet.microsoft.com/download/linux-package-manager/ubuntu16-04/sdk-current
[h2]      3.2安装 .Net for Spark及代码实现[/h2]         参见安装过程: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
[h2]     3.3安装 netcat[/h2]1
  1. 命令行:apt-
复制代码
  1. get
复制代码
  1. install netcat
复制代码
[h1]4.开发调试[/h1]
[h2]     4.1启动netcat[/h2]    主要用于实时发送字符串,实现字符串统计。
[h2]    4.2启动调试模式[/h2]    在程序集目录:HelloSpark/bin/Debug/netcoreapp2.2下。
1
  1. 命令行:spark-submit --
复制代码
  1. class
复制代码
  1. 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
[h2]    4.3启动vscode调试[/h2]    在main函数的第一行增加一行测试代码:
1
  1. args=
复制代码
  1. new
复制代码
  1. string
复制代码
  1. []{
复制代码
  1. "localhost"
复制代码
  1. ,
复制代码
  1. "9999"
复制代码
  1. };
复制代码
      主要用于连接netcat服务,接收netcat发送过来的字符串,并进行字符串统计。如下图:


[h2]     4.4调试过程[/h2]     打开“4.1启动netcat”和“4.2启动调试模式”窗口,netcat用于发送数据,调试模式窗口可以接收到数据并进行统计。如下图:

[h1]5.应用发布[/h1]
     把main函数内的测试代码删除掉,在工程目录下执行命令:dotnet build,生成新的程序集。
      在程序集目录:HelloSpark/bin/Debug/netcoreapp2.2下执行命令:
1
  1. 命令行:spark-submit --
复制代码
  1. class
复制代码
  1. org.apache.spark.deploy.DotnetRunner --master local microsoft-spark-2.4.x-0.3.0.jar dotnet HelloSpark.dll localhost 9999
复制代码
       同样在netcat窗口发送数据,结果如下图:


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP