.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 查询集上的性能对比。如下图:
在上看了源代码,代码质量比较高。最近两天进行了应用及测试,整体流程已经走通,感觉比较清爽。
2.系统环境
操作系统:ubuntu 16.04
开发语言:.net core 2.2
计算框架:.net for spark
开发工具:vscode
测试工具:netcat
3.环境部署
3.1安装 .net core 2.2
参见安装过程:
3.2安装 .net for spark及代码实现
参见安装过程:
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):。
项目代码下载:博客园下载