.NET for Apache Spark 入门演练
.NET for Apache Spark 入门演练
微软官方文档: .NET for Apache Spark 入门 | Microsoft Learn
注意:由于本次在windows平台下进行演练,以下在未标注操作系统平台处,默认为windows。
1. 环境准备
推荐安装工具: visual studio 2019, 7-zip 或 bandzip 解压工具
1.1 安装.Net
推荐安装 visual studio 2019 作为编码IDE,同时它会自动安装 .net 开发环境。
在windows开发环境下,安装了visual studio 2019或者其它版本时已经安装了.net开发环境。故不做详细说明。
在命令行输入以下命令验证是否有.net环境:
dotnet --version
打印出版本信息,则进行下一步。
1.2 安装 Java
安装 java 8 , 安装完成后可使用如下命令进行测试
java , javac , java -version
打印出版本信息,则进行下一步。
1.3 安装 Apache Spark
本文使用 spark-3.0.1-bin-hadoop2.7.tgz。
官网下载地址:Downloads | Apache Spark
下载完成后,使用7-zip提取嵌套的 .tar文件,然后解压 .tar文件
取消7-zip界面的 "提取到" 勾选框
设置环境变量
# 这里的 C:\bin 替换为自己的安装目录
setx /M HADOOP_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
setx /M SPARK_HOME C:\bin\spark-3.0.1-bin-hadoop2.7\
setx /M PATH "%PATH%;%HADOOP_HOME%;%SPARK_HOME%bin"
环境变量设置成功后,**打开新的命令行 **运行以下命令
spark-submit --version
如果打印出版本信息,则安装成功,进行下一步。
1.4 安装.NET for Apache Spark
- 从 GitHub Releases · dotnet/spark (github.com) 下载。 这里下载 Microsoft.Spark.Worker.net461.win-x64-2.1.1.zip 版本,因为本文是基于 .NetFramework 演练。
- 使用7-zip提取嵌套的 .tar文件,然后解压 .tar文件
- 取消7-zip界面的 "提取到" 勾选框
1.5 安装 WinUtils(仅限 Windows)
.NET for Apache Spark 要求与 Apache Spark 一起安装 WinUtils。 下载 winutils.exe 。然后,将 WinUtils 复制到 C:\bin\spark-3.0.1-bin-hadoop2.7\bin。
设置环境变量
# 这里的 C:\bin 替换为自己的安装目录
setx /M DOTNET_WORKER_DIR C:bin\Microsoft.Spark.Worker-2.1.1
2 编写演练实例
在本地新建一个文本,输入如下内容
Hello World
This .NET app uses .NET for Apache Spark
This .NET app counts words with Apache Spark
打开 visual studio 2019,选择 .NetFramework,创建控制台程序。
引入 NuGet 包:Microsoft.Spark,默认最新版本2.1.1
在 Progarm.cs 文件中输入以下代码
var inputTxt = @"C:\Users\Administrator\Desktop\新建文本文档.txt";
SparkSession spark = SparkSession
.Builder()
.AppName("word_count_sample")
.GetOrCreate();
// Create initial DataFrame
DataFrame dataFrame = spark.Read().Text(inputTxt);
// Count words
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());
// Show results
words.Show();
// Stop Spark session
spark.Stop();
编译输出。
执行。输入如下命令运行
spark-submit --class org.apache.spark.deploy.dotnet.DotnetRunner --master local microsoft-spark-3-0_2.12-2.1.1.jar ConsoleApp1.exe
- spark-submit 提交给spark执行
- --calss 执行程序
- --master 本地还是远程仓库,选local, 然后 指定 microsoft-spark 版本,然后 指定用户程序
这里有个注意的地方,NuGet下载下来的包,在编译输出目录下会有4个jar包
- microsoft-spark-2-4_2.11-2.1.1.jar
- microsoft-spark-3-0_2.12-2.1.1.jar
- microsoft-spark-3-1_2.12-2.1.1.jar
- microsoft-spark-3-2_2.12-2.1.1.jar
这里选择第二个 microsoft-spark-3-0_2.12-2.1.1.jar,只有这个能运行成功 。其它3个应该是 .netcore平台下的,
执行结果如下:
说明第一次演练成功!
.NET for Apache Spark 入门演练的更多相关文章
- [翻译]Apache Spark入门简介
原文地址:http://blog.jobbole.com/?p=89446 我是在2013年底第一次听说Spark,当时我对Scala很感兴趣,而Spark就是使用Scala编写的.一段时间之后,我做 ...
- Apache Spark大数据分析入门(一)
摘要:Apache Spark的出现让普通人也具备了大数据及实时数据分析能力.鉴于此,本文通过动手实战操作演示带领大家快速地入门学习Spark.本文是Apache Spark入门系列教程(共四部分)的 ...
- 新手福利:Apache Spark入门攻略
[编者按]时至今日,Spark已成为大数据领域最火的一个开源项目,具备高性能.易于使用等特性.然而作为一个年轻的开源项目,其使用上存在的挑战亦不可为不大,这里为大家分享SciSpike软件架构师Ash ...
- Apache Spark 2.2.0 中文文档 - 快速入门 | ApacheCN
快速入门 使用 Spark Shell 进行交互式分析 基础 Dataset 上的更多操作 缓存 独立的应用 快速跳转 本教程提供了如何使用 Spark 的快速入门介绍.首先通过运行 Spark 交互 ...
- Spark 入门
Spark 入门 目录 一. 1. 2. 3. 二. 三. 1. 2. 3. (1) (2) (3) 4. 5. 四. 1. 2. 3. 4. 5. 五. Spark Shell使用 ...
- Spark入门实战系列--10.分布式内存文件系统Tachyon介绍及安装部署
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Tachyon介绍 1.1 Tachyon简介 随着实时计算的需求日益增多,分布式内存计算 ...
- 使用scala开发spark入门总结
使用scala开发spark入门总结 一.spark简单介绍 关于spark的介绍网上有很多,可以自行百度和google,这里只做简单介绍.推荐简单介绍连接:http://blog.jobbole.c ...
- Spark入门实战系列--1.Spark及其生态圈简介
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...
- Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...
- Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Spark .时间不一样,SBT是白天编译,Maven是深夜进行的,获取依赖包速度不同 ...
随机推荐
- SRE中的SLA/SLO/SLI
SLA通俗理解 SLA 表征服务方与客户间的服务等级协议,定义服务方需保证的服务质量以及不达标情况下的服务补偿,在SRE领域,SLA 细分为 SLI.SLO 与 SLA: SLI,服务质量指标,服务的 ...
- 程序猿要chatpgpt干掉了?
如何拥抱被chatpgpt拉开的人工智能大时代 昨天 chatgpt-4 发布了.我看到好多技术圈的人都惶恐着,以后咱们都要失业了/(ㄒoㄒ)/~~ 和之前差不多的是毫无意外地又引动了一大波舆论.虽然 ...
- 09-devserver
const {resolve} = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') module.ex ...
- C# 强行关闭其他软件对文件的占用
using System.Diagnostics; // 获取占用文件的进程并强制结束 public void CloseProcessByFileName(string fileName) { Pr ...
- JavaFx 生成二维码工具类封装
原文地址: JavaFx 生成二维码工具类封装 - Stars-One的杂货小窝 之前星之音乐下载器有需要生成二维码功能,当时用的是一个开源库来实现的,但是没过多久,发现那个库依赖太多,有个http- ...
- NC19427 换个角度思考
题目链接 题目 题目描述 给定一个序列,有多次询问,每次查询区间里小于等于某个数的元素的个数 即对于询问 \((l,r,x)\) ,你需要输出 \(\sum_{i=l}^{r}[a_i \le x]\ ...
- 音视频八股文(11)-- ffmpeg avio 内存输入和内存输出。内存输出有完整代码,网上很少有的。
1.avio介绍 avio是FFmpeg中的一个模块,用于实现多种输入输出方式的封装. avio提供了一系列API,可以将数据从内存读取到缓冲区中,也可以将缓冲区中的数据写入到内存中.其实现依赖于IO ...
- 【python爬虫】对于微博用户发表文章内容和评论的爬取
此博客仅作为交流学习 对于喜爱的微博用户文章内容进行爬取 (此部分在于app页面进行爬取,比较方便) 分析页面 在这里进行json方法进行,点击Network进行抓包 发现数据加载是由这个页面发出的, ...
- 2022-02-06:等差数列划分 II - 子序列。 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目。 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称
2022-02-06:等差数列划分 II - 子序列. 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目. 如果一个序列中 至少有三个元素 ,并且任意两个相邻元素之差相同,则称 ...
- docker安装rabbitmq:management
1.拉取镜像 docker pull rabbitmq:management 2.安装 docker run -dit --name rabitmq -e RABBITMQ_DEFAULT_USER= ...