vlambda博客
学习文章列表

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

昨天看到一篇文章说.NET for Apache Spark 1.0 版本正式发布了,于是赶紧去网上看看热闹,发现已经是18天前的事情了,所以自己赶紧动手做个demo尝尝鲜,顺便把吃螃蟹的过程记录了下来,分享给还没有吃过这道大餐的neters。

1、安装java8,配置环境变量

JDK:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

java -version

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

  2、安装python

下载:https://www.python.org/

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

3、安装Spark

下载:https://spark.apache.org/downloads.html

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

添加Hadoop,windows使用 winutils.exe 这个文件

克隆 https://github.com/steveloughran/winutils  代码仓库到本地

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

 复制hadoop-3.0.0里面的bin目录到D:\hadoop目录

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

4、配置环境变量

  • 配置Spark环境变量:

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

  •  配置Hadoop环境变量:

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

  • PATH变量增加Spark,Hadoop环境变量

 【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

  •  设置Spark本地主机名的环境变量:SPARK_LOCAL_HOSTNAME = localhost

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

查看Spark是否安装成功(参考微软官方的URL)

spark-submit --version

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

5、 运行Spark

spark-shell

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

至此:Spark本地windows10的环境就配好了。


接下来就该net程序闪亮登场了。

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

为 Spark 安装 .NET

下载:https://github.com/dotnet/spark/releases/tag/v1.0.0

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

解压到D:\spark目录里,设置环境变量

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

Visual Studio 2019创建“HelloSpark” Console的项目

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

HelloSpark.csproj文件内容:

<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework>  </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Spark" Version="1.0.0" />  </ItemGroup> <ItemGroup> <None Update="input.txt"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="people.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None>  </ItemGroup></Project>

people.json文件内容:

{"name": "Michael" }{"name":"Andy", "age":30}{"name":"Justin", "age":19}

input.txt文件内容:

Hello WorldThis .NET app uses .NET for Apache SparkThis .NET app counts words with Apache Spark

Program.cs:

using Microsoft.Spark.Sql;
namespace HelloSpark{ class Program { static void Main(string[] args) { var spark = SparkSession.Builder().AppName("word_count_sample").GetOrCreate();
DataFrame peopleFrame = spark.Read().Json("people.json"); peopleFrame.Show();
DataFrame dataFrame = spark.Read().Text("input.txt");
DataFrame words = dataFrame .Select(Functions.Split(Functions.Col("value"), " ").Alias("words")) .Select(Functions.Explode(Functions.Col("words")) .Alias("word")) .GroupBy("word") .Count() .OrderBy(Functions.Col("count").Desc());
words.Show();
spark.Stop(); } }}

编译:

dotnet build

【西天取经】Windows10 安装 Spark3.0,使用.net创建第一个Spark程序

运行net core的Spark程序的代码有点复杂:

%SPARK_HOME%\bin\spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local bin\Debug\netcoreapp3.1\microsoft-spark-3-0_2.12-1.0.0.jar dotnet bin\Debug\netcoreapp3.1\HelloSpark.dll

运行结果:


 

Spark框架不仅有JVM系的位置,就在18天前也有了.net core的一席之地!

以上内容仅作为.net for spark入门程序,由于本人刚接触spark,水平有限只能给大家做到搭环境写个demo这一步了,希望.net for spark 在不远的将来能够给.net技术栈贡献更多的大数据项目