步骤1:可从命令行环境运行 dotnet --version
、java
、spark-shell
,则表示你的环境已准备就绪且你可跳到下一部分。 如果无法运行任何或部分命令,请执行步骤2。
步骤2:下载并安装 .NET SDK ,本文安装.net6.0
步骤3:安装java JDK
步骤4:下载并安装 Apache Spark,本文为spark-3.0.1-bin-hadoop2.7.tgz,下载地址https://archive.apache.org/dist/spark/spark-3.0.1/
配置Apache Spark环境变量
HADOOP_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
SPARK_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
PATH
"%PATH%;%HADOOP_HOME%;%SPARK_HOME%bin"
配置好后,CMD进入命令行
spark-submit --version
步骤5:安装 .NET for Apache Spark 下载地址,选择图中的版本下载
https://github.com/dotnet/spark/releases
解压后提取到 C:\bin目录。
步骤6:安装 WinUtils.exe
将 下载好的WinUtils.exe 复制到 C:\bin\spark-3.0.1-bin-hadoop2.7\bin目录中。注意版本号要与hadoop的一致
最后,仔细检查是否可从命令行运行 dotnet
、java
、spark-shell
,没有问题了,然后再转到下一部分。
步骤7:cmd命令行,输入如下命令
dotnet new console -o MySparkApp
cd MySparkApp
dotnet add package Microsoft.Spark
步骤8:在 Visual Studio Code 中打开 Program.cs 或打开任何文本编辑器,再将所有代码替换为以下内容:
using Microsoft.Spark.Sql;
using static Microsoft.Spark.Sql.Functions;
namespace MySparkApp
{
class Program
{
static void Main(string[] args)
{
// Create Spark session
SparkSession spark =
SparkSession
.Builder()
.AppName("word_count_sample")
.GetOrCreate();
// Create initial DataFrame
string filePath = args[0];
DataFrame dataFrame = spark.Read().Text(filePath);
//Count words
DataFrame words =
dataFrame
.Select(Split(Col("value")," ").Alias("words"))
.Select(Explode(Col("words")).Alias("word"))
.GroupBy("word")
.Count()
.OrderBy(Col("count").Desc());
// Display results
words.Show();
// Stop Spark session
spark.Stop();
}
}
}
步骤9:在 MySparkApp 目录中创建一个名为 input.txt 的文件,其中包含以下文本:
然后执行
Hello World
This .NET app uses .NET for Apache Spark
This .NET app counts words with Apache Spark
dotnet build
最后在MySparkApp根目录执行如下命令:
spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local bin\Debug\net6.0\microsoft-spark-3-0_2.12-2.1.0.jar dotnet bin\Debug\net6.0\MySparkApp.dll input.txt
然后浏览器持续刷新页面http://localhost:4040/jobs/ 可查看spark的运行过程。
执行成功后,会在控制台打印出如下。