西天取经Windows10 安装 Spark3.0,使用.net创建第一个Spark程序
Posted 西天取经168
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了西天取经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
java -version
2、安装python
下载:https://www.python.org/
3、安装Spark
下载:https://spark.apache.org/downloads.html
添加Hadoop,windows使用 winutils.exe 这个文件
克隆 https://github.com/steveloughran/winutils 代码仓库到本地
复制hadoop-3.0.0里面的bin目录到D:hadoop目录
4、配置环境变量
配置Spark环境变量:
配置Hadoop环境变量:
PATH变量增加Spark,Hadoop环境变量
设置Spark本地主机名的环境变量:SPARK_LOCAL_HOSTNAME = localhost
查看Spark是否安装成功(参考微软官方的URL)
spark-submit --version
5、 运行Spark
spark-shell
至此:Spark本地windows10的环境就配好了。
接下来就该net程序闪亮登场了。
为 Spark 安装 .NET
下载:https://github.com/dotnet/spark/releases/tag/v1.0.0
解压到D:spark目录里,设置环境变量
Visual Studio 2019创建“HelloSpark” Console的项目
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 World
This .NET app uses .NET for Apache Spark
This .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
运行net core的Spark程序的代码有点复杂:
%SPARK_HOME%binspark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local binDebugnetcoreapp3.1microsoft-spark-3-0_2.12-1.0.0.jar dotnet binDebugnetcoreapp3.1HelloSpark.dll
运行结果:
Spark框架不仅有JVM系的位置,就在18天前也有了.net core的一席之地!
以上内容仅作为.net for spark入门程序,由于本人刚接触spark,水平有限只能给大家做到搭环境写个demo这一步了,希望.net for spark 在不远的将来能够给.net技术栈贡献更多的大数据项目。
以上是关于西天取经Windows10 安装 Spark3.0,使用.net创建第一个Spark程序的主要内容,如果未能解决你的问题,请参考以下文章
12306的西天取经路 春节抢票与PostgreSQL数据库设计思考
程序员 || 无硬实力跳槽就能涨薪?我信你个鬼...比西天取经还苦逼!为学弟学妹们“初出社会”整理出的“菜鸟”跳槽攻略(学习篇)