Intellij IDEA安装配置Spark与运行

目录

Scala配置教程

配置Spark运行环境

编写Spark程序

 1、包和导入

2、定义对象

3、主函数

4、创建Spark配置和上下文

5、定义输入文件路径

6、单词计数逻辑

7、输出结果

8、完整代码:


Scala配置教程

IDEA配置Scala:教程

配置Spark运行环境

添加Spark开发依赖包(快捷键:Ctrl+Alt+Shift+S)

找到Spark安装目录下的jars文件夹,将整个文件夹导入 

Spark编程环境配置完成 

在com.tipdm.sparkDemo包下新建WordCount类并指定类型为object,编写spark程序实现单词计数器。

  

 选择Dependencies勾选Scala-sdk-2.12.15和jars

 

 添加Add Content root Root

 选择jars点击ok

编写Spark程序

        在Scala的基础上(教程)

 1、包和导入

package com.tipdm.sparkDemo  
import org.apache.spark.{SparkConf, SparkContext}

 这里定义了一个包(com.tipdm.sparkDemo),并导入了SparkConfSparkContext这两个类,它们都是Apache Spark的核心组件。

2、定义对象

object WordCount {

 这里定义了一个单例对象WordCount。在Scala中,对象可以包含方法和字段,并且可以作为程序的入口点。

3、主函数

def main(args: Array[String]): Unit = {

这是程序的入口点,main函数。它接收一个字符串数组作为参数(通常用于命令行参数),并返回Unit(在Scala中,这相当于Java中的void)。

4、创建Spark配置和上下文

val conf = new SparkConf().setAppName("WordCount").setMaster("local")
val sc = new SparkContext(conf)

 首先,创建一个SparkConf对象并设置应用程序的名称为"WordCount"。然后,使用这个配置创建一个SparkContext对象,它是Spark应用程序的入口点。

5、定义输入文件路径

val input = "C:\\Users\\John\\Desktop\\words.txt"

这里定义了一个字符串变量input,它包含了要读取的文件的路径。

6、单词计数逻辑

val count = sc.textFile(input).flatMap(x => x.split(" ")).map(  x => (x, 1)).reduceByKey((x, y) => x + y)

* `sc.textFile(input)`:从指定的路径读取文件,并返回一个RDD(弹性分布式数据集),其中每个元素是文件中的一行。  
* `flatMap(x => x.split(" "))`:将每一行分割成单词,并扁平化结果。这意味着所有行的单词都会合并到一个单一的RDD中。  
* `map(x => (x, 1))`:为每个单词映射一个键值对,其中键是单词,值是1。这表示每个单词都出现了一次。  
* `reduceByKey((x, y) => x + y)`:对于具有相同键的所有值,执行reduce操作。在这里,它简单地将所有1相加,从而计算每个单词的出现次数。

7、输出结果

count.foreach(x => println(x._1 + "," + x._2))

使用foreach操作遍历结果RDD,并打印每个单词及其出现次数。x._1是键(单词),x._2是值(出现次数)。

整个程序会读取指定路径下的文件,计算每个单词的出现次数,并打印结果。这是一个使用Spark进行基本文本分析的常见示例。

 words.txt放在桌面了所以路径为

C:\Users\John\Desktop\words.txt

 words.txt文件内容为:

Hello World Our World
Hello BigData Real BigData
Hello Hadoop Great Hadoop
HadoopMapReduce

8、完整代码:

package com.tipdm.sparkDemo
import org.apache.spark.{SparkConf, SparkContext}
object WordCount {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("WordCount").setMaster("local")val sc = new SparkContext(conf)val input = "C:\\Users\\John\\Desktop\\words.txt"// 计算各个单词出现次数val count = sc.textFile(input).flatMap(x => x.split(" ")).map(x => (x, 1)).reduceByKey((x, y) => x + y)count.foreach(x => println(x._1 + "," + x._2))}
}

运行成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2905198.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【微服务】Nacos(配置中心)

文章目录 1.AP和CP1.基本介绍2.说明 2.Nacos配置中心实例1.架构图2.在Nacos Server加入配置1.配置列表,加号2.加入配置3.点击发布,然后返回4.还可以编辑 3. 创建 Nacos 配置客户端模块获取配置中心信息1.创建子模块 e-commerce-nacos-config-client50002…

web学习笔记(四十九)

目录 1. 初识 Express 1.1 什么是 Express 1.2 Express 能做什么 1.3 Express 的基本使用 1.4 如何把内容响应给客户端 2. 托管静态资源 2.1 express.static() 1. 初识 Express 1.1 什么是 Express 之前我们有讲过可以通过node.js内置的http模块来创建服务器&#x…

需求生命周期管理

背景 回顾很多项目或者产品,我们发现现在的版本和当初的理解或者设想是天壤之别,这是什么原因,对于这种情况又应该如何处理呢? 业务分析的交付物是需求文档,业务分析整个过程随着对业务的逐步深入,观察视…

【3DsMax+Pt】练习案例

目录 一、在3DsMax中展UV 二、在Substance 3D Painter中绘制贴图 一、在3DsMax中展UV 1. 首先创建如下模型 2. 选中如下三条边线作为接缝 重置剥 发现如下部分还没有展开 再选一条边作为接缝 再次拨开 拨开后的UV如下 二、在Substance 3D Painter中绘制贴图 1. 新建项目&am…

JVM之EhCache缓存

EhCache缓存 一、EhCache介绍 在查询数据的时候,数据大多来自数据库,咱们会基于SQL语句的方式与数据库交互,数据库一般会基于本地磁盘IO的形式将数据读取到内存,返回给Java服务端,Java服务端再将数据响应给客户端&am…

微服务(基础篇-004-Feign)

目录 http客户端Feign Feign替代RestTemplate(1) Feign的介绍(1.1) 使用Feign的步骤(1.2) 自定义配置(2) 配置Feign日志的两种方式(2.1) Feign使用优化…

一只英短,有什么牌子的口粮适合它?

亲爱的铲屎官,你问到了一只英短适合什么牌子的口粮,那我一定要推荐你试试福派斯鲜肉无谷猫粮!🐱🍚 首先,英短猫咪的肠胃比较敏感,所以选择一款无谷的猫粮是非常重要的。福派斯鲜肉无谷猫粮就是一…

Python人工智能:气象数据可视化的新工具

Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

SpringBoot实现RabbitMQ的广播交换机(SpringAMQP 实现Fanout广播交换机)

文章目录 声明交换机消息接收消息发送效果 广播交换机的特定是: 将消息交给所有绑定到交换机的队列 在广播模式下,消息发送流程是这样的: 1) 可以有多个队列2) 每个队列都要绑定到 Exchange(交换机)3&…

信息安全之网络安全防护

先来看看计算机网络通信面临的威胁: 截获——从网络上窃听他人的通信内容中断——有意中断他人在网络上的通信篡改——故意篡改网络上传送的报文伪造——伪造信息在网络上传送 截获信息的攻击称为被动攻击,而更改信息和拒绝用户使用资源的攻击称为主动…

RabbitMQ安装及使用笔记

RabbitMQ安装及使用笔记 RabbitMQ是一个开源的消息代理软件,它实现了高级消息队列协议(AMQP),用于在分布式系统中进行消息传递。 1.安装 利用docker load命令加载mq镜像 docker load -i mq.tar 基于Docker来安装RabbitMQ&#xff…

【计算机网络】http协议的原理与应用,https是如何保证安全传输的

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

C# 高级文件操作与异步编程探索(初步)

文章目录 文本文件的读写探秘StreamReader 类深度剖析StreamWriter 类细节解读编码和中文乱码的解决方案 二进制文件的读写BinaryReader 类全面解析BinaryWriter 类深度探讨 异步编程与C#的未来方向同步与异步:本质解读Task 的神奇所在async/await 的魔法 在现代编程…

威联通安装Kafka

最近在学习 Kafka 的知识,遇到一些问题网上搜到的信息不全。想要在本地安装一个 Kafka 进行验证,想到了之前买的 Nas 就开始折腾。 用 Docker 的方式安装 Kafka 现在的 Nas 很多都支持 Docker,我买的也支持。威联通的 Docker 叫 Container S…

C语言例4-36:求Fibonacci数列的前40个数

教材优化代码如下&#xff1a; //求Fibonacci数列的前40个数 #include<stdio.h> int main(void) {long int f11,f21;int i1;for(;i<20;i){printf("%15ld%15ld",f1,f2);if(i%20)printf("\n");f1f2;f2f1;}return 0; } 结果如下&#xff1a; 我的基…

深度学习故障诊断实战 | 数据预处理之基于滑动窗的数据样本增强

前言 本期给大家分享介绍如何基于滑动窗方法进行数据样本增强 背景 深度学习模型训练需要大量的样本。在故障诊断领域&#xff0c;每个类别大都会达到300个样本。但是在实际公开数据集中&#xff0c;以CWRU数据集为例&#xff0c;每个类别只有24组数据&#xff0c;这明显是不…

Golang-Gorm-快速上手

Gorm文档 GORM文档地址 安装依赖 go get -u "gorm.io/driver/mysql"go get -u "gorm.io/gorm"连接数据库 默认连接方式 func main() {// 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情dsn : "user:passtcp(127.0.0…

GEE实践应用|热岛效应(一)地表温度计算

目录 1.学习目标 2.理论介绍 3.从MODIS获得地表温度 4.从Landsat卫星获得地表温度 1.学习目标 ①了解如何使用GEE计算地表温度 2.理论介绍 城市化涉及用建筑物、道路和停车场等建筑结构取代自然景观。这种土地覆盖的改变也改变了土地表面的特性。这些变化的范围从表面反射和…

设计模式-设配器模式

目录 &#x1f38a;1.适配器模式介绍 &#x1f383;2.适配器类型 &#x1f38f;3.接口适配器 &#x1f390;4.类的适配器 &#x1f38e;5.优缺点 1.适配器模式介绍 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设…

【项目技术介绍篇】若依管理系统功能介绍

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…