.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


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

.Net for Spark 实现 WordCount 应用及调试入坑详解的更多相关文章

  1. 对于maven创建spark项目的pom.xml配置文件(图文详解)

    不多说,直接上干货! http://mvnrepository.com/ 这里,怎么创建,见 Spark编程环境搭建(基于Intellij IDEA的Ultimate版本)(包含Java和Scala版 ...

  2. 58、Spark Streaming: DStream的output操作以及foreachRDD详解

    一.output操作 1.output操作 DStream中的所有计算,都是由output操作触发的,比如print().如果没有任何output操作,那么,压根儿就不会执行定义的计算逻辑. 此外,即 ...

  3. 大数据学习系列之七 ----- Hadoop+Spark+Zookeeper+HBase+Hive集群搭建 图文详解

    引言 在之前的大数据学习系列中,搭建了Hadoop+Spark+HBase+Hive 环境以及一些测试.其实要说的话,我开始学习大数据的时候,搭建的就是集群,并不是单机模式和伪分布式.至于为什么先写单 ...

  4. [spark]-Spark2.x集群搭建与参数详解

    在前面的Spark发展历程和基本概念中介绍了Spark的一些基本概念,熟悉了这些基本概念对于集群的搭建是很有必要的.我们可以了解到每个参数配置的作用是什么.这里将详细介绍Spark集群搭建以及xml参 ...

  5. 解决在windows的eclipse上面运行WordCount程序出现的一系列问题详解

    一.简介 要在Windows下的 Eclipse上调试Hadoop2代码,所以我们在windows下的Eclipse配置hadoop-eclipse-plugin- 2.6.0.jar插件,并在运行H ...

  6. Spark Sort-Based Shuffle具体实现内幕和源码详解

    为什么讲解Sorted-Based shuffle?2方面的原因:一,可能有些朋友看到Sorted-Based Shuffle的时候,会有一个误解,认为Spark基于Sorted-Based Shuf ...

  7. Spark源码系列(二)RDD详解

    1.什么是RDD? 上一章讲了Spark提交作业的过程,这一章我们要讲RDD.简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据. RDD的全名是Resilient Di ...

  8. ios 利用Reveal来调试界面2--真机调试(步骤详解)

    使用真机调试我们的App界面,如果你的真机是没有越狱的设备,那么使用Reveal来调试UI的步骤是最麻烦的.

  9. Lua调试:getinfo详解

    getinfo是调试Lua程序时一个很重要很常见的函数,主要用于获取函数调用的基本信息.这个函数的难点在于各个参数的含义.下面一一介绍. 一.函数简介: 1.原型:getinfo(level, arg ...

随机推荐

  1. 面试问题:Vista与XP的Session 0与Session X的区别

    面试问题:Vista与XP的Session 0与Session X的区别 在XXXXX的一次面试中,笔试问题的题目曾提到Session 0.Session 1在Vista和Xp中的区别?现在把答案发上 ...

  2. Android于popWindow写弹出菜单

    1.什么是popWindow? popWindow这是对话的方式!文字解说android的方式来使用对话框,这就是所谓的popWindow. 2.popWindow特征 Android的对话框有两种: ...

  3. 在.net core 的webapi项目中将对象序列化成json

    问题:vs2017 15.7.6创建一个基于.net core 2.1的webapi项目,默认生成的控制器继承自ControllerBase类 在此情况下无法使用Json()方法 将一个对象转成jso ...

  4. NYOJ781 又见回文数

    又见回文数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 冷淡的回文数被水了,各种被水,然后他非常生气,然后... 一个数从左边读和从右边读一样,就说这个数是回文数 ...

  5. 跟我学ASP.NET MVC之九:SportsStrore产品管理

    摘要: 在这篇文章中,我将继续完成SportsStore应用程序,让站点管理者可以管理产品列表.我将添加创建.修改和删除产品功能. 本篇文章将分模块的方式,逐个介绍SportsStore站点管理功能的 ...

  6. sql语句计算出每个月的天数

    原文:sql语句计算出每个月的天数   从当前月-11个月开始,到当前月为止,用一个sql语句计算出每个月的天数. SELECT TO_CHAR(ADD_MONTHS(SYSDATE,-LEVEL+1 ...

  7. Cocos2d-x 3.1 一步一步地做改编

    本文并不想谈论的屏幕改编或真理的概念.假设不知道cocos2d-x的,请先看这篇文章:http://www.cocoachina.com/gamedev/cocos/2014/0516/8451.ht ...

  8. nginx 502错 failed (13: Permission denied)

    安装nginx和php-fpm之后出现502错误 找了个理由说php-fpm不启动 ,但在我的实践中,该过程开始 找了半天没找到病因.视图nginx记录后 我发现下面的错误 [crit] 2686#0 ...

  9. NoSQL Manager for Cassandra 3.2.0.1 带Key

    NoSQL Manager for Cassandra 3.2.0.1 是一个Windows平台下Cassandra 数据库的高级管理工具.请低调使用. NoSQLManagerforCassandr ...

  10. 关于QSocket的释放的一个需要注意的情况(必须先断开连接)

    最近在用QtNetwork编写服务器程序进行TCP/IP通信,大体过程如下: 1. 创建一个QTcpServer实例,监听目标IP和端口: 2. 一旦监听到有连接,获取和客户端之间的socket: 3 ...