试用.NET for Apache Spark (Microsoft.Spark 0.1)
半野

1.本机环境

.NET Core 2.2

Java jdk1.8.0_151

Spark 2.3.3

Hadoop 2.7.5

Maven 3.5.3(注意,官方提供要求为3.6.0+)

Spark和Hadoop的安装可以参考:Windows下安装Spark2.2.0和Hadoop2.7.5,除了Spark的版本不一致,其他的相同。

2.新建项目

打开VS2017,新建一个.NET Core的控制台项目

1.png

3.安装Microsoft.Spark包

1
`Install-Package Microsoft.Spark -Version 0.1.0`

注意,安装完成后可以看到有两个jar包,事实上,这两个jar包应该是Spark用来解析.NET程序或者说spark用来和.net进行通讯的。

2.png

4.Coding

1
`static void Main(string[] args) { var spark = SparkSession .Builder() .AppName("word_count") .Master("local") .GetOrCreate(); DataFrame dataFrame = spark.Read().Json("people.json"); dataFrame.Show(); Console.WriteLine("Finished!"); Console.Read(); }`

其中的person.json来着spark提供的资源,具体路径在

XXX\Spark\spark-2.3.3-bin-hadoop2.7\examples\src\main\resources\people.json

5.编译运行

5.1.编译程序为exe

1
`dotnet publish -f netcoreapp2.2 -r win10-x64`

3.png

5.2.运行程序

基本形式:

1
`spark-submit.cmd [--jars <any-jars-your-app-is-dependent-on>] --class org.apache.spark.deploy.DotnetRunner --master local <path-to-microsoft-spark-jar> <path-to-your-app-exe> <argument(s)-to-your-app>`

实例:

1
`spark-submit --class org.apache.spark.deploy.DotnetRunner --master local microsoft-spark-2.3.x-0.1.0.jar SparkTest.exe`

4.png

回车换行即可关闭当前链接。

5.png

6.总结

Microsoft.Spark的api基本上与java中是保持一致的,虽然不能像java、scala等一样能够直接在IDE里面运行,但是有总胜于无。之前想在.NET Core上运行Spark,发现Mobius并不支持Core,无奈之下只好放弃,现在 Microsoft.Spark的出现,能够在一定程度上弥补这个缺陷。

Microsoft.Spark依然还有许多不足,比如我没有在SparkContext下找到什么东西,目前貌似只能使用SparkSession,但是它毕竟还是一个“新生儿”,以后一定会越来越好的。

P.S.

.NET for Apache Spark/Microsoft Spark介绍:https://devblogs.microsoft.com/dotnet/introducing-net-for-apache-spark/

GitHub:https://github.com/dotnet/spark

由 Hexo 驱动 & 主题 Keep
总字数 105.7k 访客数 访问量