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


           项目代码下载:博客园下载

  • 相关阅读:
    软件体系架构复习要点
    Operating System on Raspberry Pi 3b
    2019-2020 ICPC North-Western Russia Regional Contest
    2019 ICPC ShenYang Regional Online Contest
    2019 ICPC XuZhou Regional Online Contest
    2019 ICPC NanChang Regional Online Contest
    2019 ICPC NanJing Regional Online Contest
    Codeforces Edu Round 72 (Rated for Div. 2)
    Codeforces Round #583 (Div.1+Div.2)
    AtCoder Beginning Contest 139
  • 原文地址:https://www.cnblogs.com/lsjwq/p/11107696.html
Copyright © 2020-2023  润新知