.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


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

最新文章

  1. Android NumberPicker 修改分割线颜色和高度及字体颜色大小
  2. js在前端获取在本地上传图片的尺寸
  3. JTAG ARM-OB 被识别为盗版修复的方法
  4. Codeforces Educational Codeforces Round 5 E. Sum of Remainders 数学
  5. i++ 与 ++i 的从字节码层面看二者的区别
  6. 软件测试之fault、error和failure的理解
  7. 浅谈PHP7的新特性
  8. PHP通过ZABBIX API获取主机信息 VS 直接从数据库获取主机信息
  9. Linux学习--进程概念
  10. js获取元素提示信息
  11. 一个简易的allocator
  12. ipone 5s上,字体rem遇到的问题
  13. WTL汉化版
  14. 在AJAX里 使用【 JSON 】 返回数据类型 实现简单的下拉菜单数据
  15. 《Redis 垃圾回收》
  16. installshield 功能传送错误
  17. C#基础篇九OOP属性结构枚举
  18. codeforcess水题100道
  19. linux 查看版本
  20. sprint2(第三天)

热门文章

  1. JPEG图像扩展信息读取和修改
  2. WPF制作Logo,很爽,今后在应用程序中加入Logo轻松,省事!
  3. ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程
  4. ASP.NET Core 基础教程-约定 - ASP.NET Core 基础教程 - 简单教程,简单编程
  5. 新版【CefSharp】 禁用右键菜单 43.00+
  6. Linux 系统安装(5分钟)
  7. hibernate关于多对多注解配置
  8. String转Color
  9. WPF里的一些Effect特效
  10. WPF中的Application类。