Spark.Net(C#)Windows开发环境安装配置

3 篇文章 0 订阅
3 篇文章 0 订阅

微软加入ASF之后.NET生态拓展得越来越好了,可喜可贺。
本文基于.NET for Apache® Spark™

  • Java 1.8
  • Apache Spark 2.4.1
  • .NET Framework 4.7.2
  • VS2019

java version “1.8.0_301”
Java™ SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot™ 64-Bit Server VM (build 25.301-b09, mixed mode)

在这里插入图片描述

按照 Getting Started with Spark .NET on WindowsBuilding Spark .NET on Windows 的说明安装依赖、配置环境变量。

  1. 下载Microsoft.Spark.Worker和spark-2.4.1-bin-hadoop2.7,解压后放到C:\bin下。
  2. 新增环境变量DOTNET_WORKER_DIR,值为C:\bin\Microsoft.Spark.Worker\
  3. 将路径C:\bin\spark-2.4.1-bin-hadoop2.7\bin\加入到环境变量PATH中
  4. 注意:虽然Getting Started with Spark .NET on Windows里没说,但是WinUtils还是需要的。必须要装!
    先确定需要安装的版本:跟Hadoop的版本一样,到C:\bin\spark-2.4.1-bin-hadoop2.7\jars下面看版本,我这个包里是2.7.3,那就装2.7.3版本的WinUtils。winutils 这个作者太忙了,另外一个人接手,所以真正的下载地址应该在 这里 。下载之后还是解压完放到C:\bin\下面,并设置环境变量HADOOP_HOME为C:\bin\hadoop-2.7.3\,然后把C:\bin\hadoop-2.7.3\bin加到PATH里。
  5. 打开VS2019,新建一个Console App,比如说叫Spark.NetFW.Demo,然后把示例代码粘贴进Program.cs里:
using Microsoft.Spark.Sql;

namespace HelloSpark
{
    class Program
    {
        static void Main(string[] args)
        {
            var spark = SparkSession.Builder().GetOrCreate();
            var df = spark.Read().Json("people.json");
            df.Show();
        }
    }
}

并建一个people.json文件,随便写点东西进去,只要不是do not copy就行。或者干脆直接到输出目录下建这个文件都可以。
6. 打开Package Manager Console,安装Microsoft.Spark
7. 编译
8. 打开一个命令行窗口,切换目录到Spark.NetFW.Demo的输出目录下,执行:

spark-submit `
--class org.apache.spark.deploy.dotnet.DotnetRunner `
--master local `
microsoft-spark-2-4_2.11-2.0.0.jar `
Spark.NetFW.Demo.exe

看github的说明里人家写的是:

spark-submit `
--class org.apache.spark.deploy.dotnet.DotnetRunner `
--master local `
microsoft-spark-<version>.jar `
dotnet HelloSpark.dll

这个<version>有文章,
我们可以看到输出目录下有3个jar包:
在这里插入图片描述
文件名里面2.11和2.12指的应该是scala的版本。而我下载的spark 2.4.1用的是scala 2.11.12,scala的版本号如果对不上,则会报一个NoSuchMethodError的错误:

java.lang.NoSuchMethodError: org.apache.spark.internal.Logging.$init$(Lorg/apache/spark/internal/Logging

也就是说,不管我们是用.NET core还是.NET Framework,我们都只能用microsoft-spark-2-4_2.11-2.0.0.jar这个包。用.NET core 3.1和.NET Framework 4.7.2创建的项目我都进行了尝试,只要jar包指定对了就没问题,.NET的版本目前看没发现有影响。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值