RDD实现单词计数

news2025/5/12 14:43:11

Scala(Spark Shell)方法

如果你在 spark-shell(Scala 环境)中运行:

1. 启动 Spark Shell

spark-shell

(确保 Spark 已安装,PATH 配置正确)

2. 执行单词统计

// 1. 读取文件(确保路径正确!)
val lines = sc.textFile("file:///home/xdt/桌面/data.txt")

// 2. 拆分单词 + 统计
val wordCounts1 = lines.flatMap(line => line.split(" "))  // 按空格分割
val wordCounts2 = wordCounts1.map(word => (word, 1))           // 每个单词计数 1
val wordCounts3 = wordCounts2.reduceByKey(_ + _)               // 相同单词累加

// 3. 显示结果(前20个)
wordCounts3.take(20).foreach(println)

// 4. 保存结果
wordCounts3.saveAsTextFile("file:///home/xdt/桌面/wordcount_output")

3. 检查输出

  • 控制台:会打印前 20 个单词的统计结果。

  • 文件:结果保存在 ~/桌面/wordcount_output/part-00000

注意路径写法,要写自己电脑上的路径。

上面是文件来源于本地的情况,如果文件位于HDFS里,要先把HDFS启动起来。

印象里好像是start-all.sh

IntelliJ IDEA 中运行

1. 安装必要工具

  • IntelliJ IDEA(建议使用 Ultimate 版,Community 版也支持 Scala)

  • Scala 插件(在 IDEA 中安装)

  • JDK 8/11(Spark 3.x 支持 JDK 8/11)

  • Scala SDK(建议 2.12.x,与 Spark 3.x 兼容)

2. 创建 Scala 项目

可以通过plugin下载scala,来创建scala项目

步骤 1:打开 IDEA,新建项目
  1. File → New → Project

  2. 选择 ScalaIDEA(或 SBT 项目)

  3. 设置:

    • Project SDK:选择 JDK(如 JDK 11)

    • Scala SDK:点击 "Create" 按钮,选择 Scala 版本(如 2.12.15)

不要忘记导Scala SDK!!!

步骤 2:配置项目结构
  • 项目名称:SparkWordCount

  • 项目路径:选择你的工作目录

3. 添加 Spark 依赖

方法 1:使用 SBT(推荐)

1.在项目根目录下找到 build.sbt 文件,添加以下内容:

name := "SparkWordCount"
version := "1.0"
scalaVersion := "2.12.15"

libraryDependencies += "org.apache.spark" %% "spark-core" % "3.3.0"

2.等待 IDEA 自动加载依赖(或手动点击 Reload All SBT Projects)。

确保 Scala 版本匹配(Spark 3.3.0 需要 Scala 2.12.x)

方法 2:手动添加 JAR

1.下载 Spark 的预编译包:

wget https://archive.apache.org/dist/spark/spark-3.3.0/spark-3.3.0-bin-hadoop3.tgz
tar -xzf spark-3.3.0-bin-hadoop3.tgz

2.在 IDEA 中:

  • File → Project Structure → Libraries → + → Java

  • 添加 Spark 的 JAR 文件:

    • spark-3.3.0-bin-hadoop3/jars/*.jar

这里主包直接添加的炸包 下面是主包的spark的路径

/opt/spark-3.5.5-bin-hadoop3/jars/spark-core_2.12-3.5.5.jar

否则无法导入 org.apache.spark

4. 创建 WordCount 程序

步骤 1:新建 Scala 类
  1. 右键 src/main/scalaNew → Scala Class

  2. 输入名称 WordCount,类型选择 Object

步骤 2:编写代码
import org.apache.spark.{SparkConf, SparkContext}

object WordCount {
  def main(args: Array[String]): Unit = {
    // 1. 创建 Spark 配置
    val conf = new SparkConf()
      .setAppName("WordCount")
      .setMaster("local[*]")  // 本地模式

    // 2. 初始化 SparkContext
    val sc = new SparkContext(conf)

    try {
      // 3. 读取文件(替换为你的路径)
      val lines = sc.textFile("file:///home/xdt/桌面/data.txt")

      // 4. 单词统计
      val wordCounts = lines
        .flatMap(_.split(" "))
        .map((_, 1))
        .reduceByKey(_ + _)

      // 5. 打印结果
      wordCounts.take(20).foreach(println)

      // 6. 保存结果
      wordCounts.saveAsTextFile("file:///home/xdt/桌面/wordcount_output")
    } finally {
      // 7. 关闭 SparkContext
      sc.stop()
    }
  }
}

5. 运行程序

方法 1:直接运行
  1. 右键 WordCount.scalaRun 'WordCount'

  2. 查看控制台输出和结果文件。

方法 2:打包后提交
  1. File → Project Structure → Artifacts → + → JAR → From modules

  2. 选择主类为 WordCount,构建 JAR。

  3. 通过 spark-submit 运行:

spark-submit --class WordCount SparkWordCount.jar

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

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

相关文章

Java快速上手之实验七

1.编写鼠标事件响应程序MouseEventDemo.java,当鼠标进入和离开窗口时给出相应显示,当按下、弹起时显示当前鼠标的坐标值。 2.编写鼠标事件响应程序MouseMotionEventDemo.java,当鼠标在窗口内移动时显示鼠标的坐标值。 …

可视化图解算法36: 序列化二叉树-I(二叉树序列化与反序列化)

1. 题目 描述 请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 二叉树的序列化(Serialize)是指:把一棵二叉树按照某种遍…

Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录

注:本文为 “Vivado FPGA 开发 | 创建工程 / 仿真 / 烧录” 相关文章合辑。 略作重排,未整理去重。 如有内容异常,请看原文。 Vivado 开发流程(手把手教学实例)(FPGA) 不完美先生 于 2018-04-…

Javascript:数组和函数

数组 创建数组 使用new创建 let arrnew array(数组大小); 直接赋值创建 let Arr2[];let Arr3[1,A,"HELLLO"]; 这里JS的数组里面的元素属性可以各不相同 演示代码 <script>let Arr1new Array(5);let Arr2[];let Arr3[1,A,"HELLLO"];console.…

无锁秒杀系统设计:基于Java的高效实现

引言 在电商促销活动中&#xff0c;秒杀场景是非常常见的。为了确保高并发下的数据一致性、性能以及用户体验&#xff0c;本文将介绍几种不依赖 Redis 实现的无锁秒杀方案&#xff0c;并提供简化后的 Java 代码示例和架构图。 一、基于数据库乐观锁机制 ✅ 实现思路&#xf…

NCCL N卡通信机制

转自我的博客&#xff1a;https://shar-pen.github.io/2025/05/05/torch-distributed-series/nccl_communication/ from IPython.display import Image import logging import torch import torch.distributed as distpytorch 分布式相关api torch.distributed.init_process_…

Alpha3DCS公差分析系统_国产替代的3D精度管控方案-SNK施努卡

随着智能制造发展规划的深入推进&#xff0c;工业软件国产化替代已上升为国家战略。在公差分析这一细分领域&#xff0c;长期被国外软件垄断的局面正被打破。 苏州施努卡自主研发的Alpha3DCS&#xff0c;凭借完全自主知识产权和军工级安全标准&#xff0c;成为国内实现三维公差…

ABB电机控制和保护单元与Profibus DP主站转Modbus TCP网关快速通讯案例

ABB电机控制和保护单元与Profibus DP主站转Modbus TCP网关快速通讯案例 在现代工业自动化系统中&#xff0c;设备之间的互联互通至关重要。Profibus DP和Modbus TCP是两种常见的通信协议&#xff0c;分别应用于不同的场景。为了实现这两种协议的相互转换&#xff0c;Profibus …

0基础 | L298N电机驱动模块 | 使用指南

引言 在嵌入式系统开发中&#xff0c;电机驱动是一个常见且重要的功能。L298N是一款高电压、大电流电机驱动芯片&#xff0c;广泛应用于各种电机控制场景&#xff0c;如直流电机的正反转、调速&#xff0c;以及步进电机的驱动等。本文将详细介绍如何使用51单片机来控制L298N电…

【金仓数据库征文】金仓数据库:创新驱动,引领数据库行业新未来

一、引言 在数字化转型的时代洪流中&#xff0c;数据已跃升为企业的核心资产&#xff0c;宛如企业运营与发展的 “数字命脉”。从企业日常运营的精细化管理&#xff0c;到战略决策的高瞻远瞩制定&#xff1b;从客户关系管理的深度耕耘&#xff0c;到供应链优化的全面协同&…

大模型系列(五)--- GPT3: Language Models are Few-Shot Learners

论文链接&#xff1a; Language Models are Few-Shot Learners 点评&#xff1a; GPT3把参数规模扩大到1750亿&#xff0c;且在少样本场景下性能优异。对于所有任务&#xff0c;GPT-3均未进行任何梯度更新或微调&#xff0c;仅通过纯文本交互形式接收任务描述和少量示例。然而&…

Qt QCheckBox 使用

1.开发背景 Qt QCheckBox 是勾选组件&#xff0c;具体使用方法可以参考 Qt 官方文档&#xff0c;这里只是记录使用过程中常用的方法示例和遇到的一些问题。 2.开发需求 QCheckBox 使用和踩坑 3.开发环境 Window10 Qt5.12.2 QtCreator4.8.2 4.功能简介 4.1 简单接口 QChec…

系统架构-面向服务架构(SOA)

概述 服务指的是系统对外提供的功能集 从应用的角度定义&#xff0c;可以认为SOA是一种应用框架&#xff0c;将日常业务划分为单独的业务功能和流程&#xff08;即服务&#xff09;&#xff0c;SOA使用户可以构建、部署和整合这些服务。 从软件的基本原理定义&#xff0c;SO…

AJAX原理

AJAX使用XHR 对象和服务器进行数据交互 XHR <p class"my-p"></p><script>const xhr new XMLHttpRequest()xhr.open(GET,http://hmajax.itheima.net/api/province)xhr.addEventListener(loadend,()>{// console.log(xhr.response)const data …

Paddle Serving|部署一个自己的OCR识别服务器

前言 之前使用C部署了自己的OCR识别服务器&#xff0c;Socket网络传输部分是自己写的&#xff0c;回过头来一看&#xff0c;自己犯傻了&#xff0c;PaddleOCR本来就有自己的OCR服务器项目&#xff0c;叫PaddleServing&#xff0c;这里记录一下部署过程。 1 下载依赖环境 1.1 …

Web开发—Vue工程化

文章目录 前言 Vue工程化 一、介绍 二、环境准备 1.介绍create-vue 2.NodeJS安装 3.npm介绍 三&#xff0c;Vue项目创建 四&#xff0c;项目结构 五&#xff0c;启动项目 六&#xff0c;Vue项目开发流程 七&#xff0c;API风格 前言 Vue工程化 前面我们在介绍Vue的时候&#…

Word如何制作三线表格

1.需求 将像这样的表格整理成论文中需要的三线表格。 2.直观流程 选中表格 --> 表格属性中的边框与底纹B --> 在设置中选择无&#xff08;重置表格&#xff09;–> 确定 --> 选择第一行&#xff08;其实是将第一行看成独立表格了&#xff0c;为了设置中线&…

【实战教程】零基础搭建DeepSeek大模型聊天系统 - Spring Boot+React完整开发指南

&#x1f525; 本文详细讲解如何从零搭建一个完整的DeepSeek AI对话系统&#xff0c;包括Spring Boot后端和React前端&#xff0c;适合AI开发入门者快速上手。即使你是编程萌新&#xff0c;也能轻松搭建自己的AI助手&#xff01; &#x1f4da;博主匠心之作&#xff0c;强推专栏…

用C语言实现的——一个支持完整增删查改功能的二叉排序树BST管理系统,通过控制台实现用户与数据结构的交互操作。

一、知识回顾 二叉排序树&#xff08;Binary Search Tree&#xff0c;BST&#xff09;&#xff0c;又称二叉查找树或二叉搜索树&#xff0c;是一种特殊的二叉树数据结构。 基本性质&#xff1a; ①有序性 对于树中的每个节点&#xff0c;其左子树中所有节点的值都小于该节点的…

论文阅读笔记——ROBOGROUND: Robotic Manipulation with Grounded Vision-Language Priors

RoboGround 论文 一类中间表征是语言指令&#xff0c;但对于空间位置描述过于模糊&#xff08;“把杯子放桌上”但不知道放桌上哪里&#xff09;&#xff1b;另一类是目标图像或点流&#xff0c;但是开销大&#xff1b;由此 GeoDEX 提出一种兼具二者的掩码。 相比于 GR-1&#…