spark local模式搭建运行示例

Apache Spark 是一个强大的分布式计算框架,但在本地模式下,它也可以作为一个单机程序运行,非常适合开发和测试阶段。以下是一个简单的示例,展示如何在本地模式下搭建和运行 Spark 程序。

一、环境准备

  1. 安装 Java
    Spark 需要 Java 环境,确保你的系统中安装了 Java 8 或更高版本。可以通过以下命令检查 Java 版本:

    java -version
    

    如果未安装 Java,可以从 Oracle 官网下载并安装。

  2. 下载并解压 Spark
    从 Apache Spark 官方网站下载最新版本的 Spark。选择预编译的二进制包(如 spark-3.4.0-bin-hadoop3.2.tgz)。
    下载完成后,解压到一个目录,例如:

    tar -xzf spark-3.4.0-bin-hadoop3.2.tgz -C /opt/
    cd /opt/spark-3.4.0-bin-hadoop3.2
    
  3. 配置环境变量(可选)
    为了方便使用,可以将 Spark 的 bin 目录添加到系统的环境变量中。编辑 ~/.bashrc~/.zshrc 文件,添加以下内容:

    export SPARK_HOME=/opt/spark-3.4.0-bin-hadoop3.2
    export PATH=$SPARK_HOME/bin:$PATH
    

    然后运行以下命令使配置生效:

    source ~/.bashrc
    

二、运行 Spark Shell

Spark Shell 是一个交互式的 Scala 命令行工具,可以用来快速测试 Spark 代码。在本地模式下运行 Spark Shell 的命令如下:

spark-shell --master local[*]
  • --master local[*] 表示在本地模式下运行,[*] 表示使用所有可用的 CPU 核心。

运行后,你会看到类似以下的输出,表示 Spark Shell 已经启动:

Welcome to____              __/ __/__  ___ _____/ /___\ \/ _ \/ _ `/ __/  '_//__ / .__/\_,_/_/ /_/\_\   version 3.4.0/_/Using Scala version 2.12.10, OpenJDK 64-Bit Server VM, 1.8.0_282
Type in expressions to have them evaluated.
Type :help for more information.scala>

三、运行一个简单的 Spark 示例

在 Spark Shell 中,你可以直接编写和运行 Spark 程序。以下是一个简单的示例,用于计算一个文本文件中单词的出现次数。

  1. 准备数据文件
    创建一个简单的文本文件 example.txt,内容如下:

    Hello Spark
    Hello World
    Spark is great
    
  2. 编写 Spark 程序
    在 Spark Shell 中,运行以下代码:

    // 读取文本文件
    val textFile = spark.read.textFile("example.txt")// 计算单词出现次数
    val wordCounts = textFile.flatMap(line => line.split(" ")) // 按空格分割单词.map(word => (word, 1)) // 将每个单词映射为 (单词, 1).reduceByKey(_ + _) // 按键(单词)归并值(计数)// 输出结果
    wordCounts.collect().foreach(println)
    
  3. 查看结果
    运行上述代码后,你会看到类似以下的输出:

    (Hello,2)
    (World,1)
    (Spark,2)
    (is,1)
    (great,1)
    

四、运行一个完整的 Spark 应用程序

除了在 Spark Shell 中运行代码,你还可以编写一个完整的 Spark 应用程序并运行它。以下是一个用 Scala 编写的简单示例。

  1. 创建项目目录
    创建一个项目目录,例如 my-spark-app,并在其中创建一个 src 文件夹:

    mkdir my-spark-app
    cd my-spark-app
    mkdir src
    
  2. 编写 Spark 应用程序代码
    src 文件夹中创建一个文件 WordCount.scala,内容如下:

    import org.apache.spark.sql.SparkSessionobject WordCount {def main(args: Array[String]): Unit = {// 创建 SparkSessionval spark = SparkSession.builder.appName("WordCount").master("local[*]").getOrCreate()// 读取文本文件val textFile = spark.read.textFile("example.txt")// 计算单词出现次数val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)// 输出结果wordCounts.collect().foreach(println)// 停止 SparkSessionspark.stop()}
    }
    
  3. 编译和打包
    使用 sbt(Scala 构建工具)来编译和打包项目。首先,创建一个 build.sbt 文件,内容如下:

    name := "MySparkApp"version := "0.1"scalaVersion := "2.12.10"libraryDependencies += "org.apache.spark" %% "spark-sql" % "3.4.0"
    

    然后运行以下命令编译和打包:

    sbt package
    
  4. 运行应用程序
    使用 spark-submit 命令运行打包后的应用程序:

    spark-submit --class WordCount --master local[*] target/scala-2.12/mysparkapp_2.12-0.1.jar
    

运行后,你会看到类似之前在 Spark Shell 中的输出结果。

总结

通过上述步骤,你可以在本地模式下搭建和运行 Spark 程序。本地模式非常适合开发和测试阶段,因为它不需要复杂的集群配置。你可以使用 Spark Shell 快速测试代码,也可以编写完整的 Spark 应用程序并使用 spark-submit 运行。

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

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

相关文章

【人工智能】解锁 AI 潜能:DeepSeek 大模型迁移学习与特定领域微调的实践

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着大型语言模型(LLMs)的快速发展,迁移学习与特定领域微调成为提升模型性能的关键技术。本文深入探讨了 DeepSeek 大模型在迁移学习中的…

视频智能分析平台EasyCVR无线监控:全流程安装指南与功能应用解析

在当今数字化安防时代,无线监控系统的安装与调试对于保障各类场所的安全至关重要。本文将结合EasyCVR视频监控的强大功能,为您详细阐述监控系统安装过程中的关键步骤和注意事项,帮助您打造一个高效、可靠的监控解决方案。 一、调试物资准备与…

【k8s系列7-更新中】kubeadm搭建Kubernetes高可用集群-三主两从

主机准备 结合前面的章节,这里需要5台机器,可以先创建一台虚拟机作为基础虚拟机。优先把5台机器的公共部分优先在一台机器上配置好 1、配置好静态IP地址 2、主机名宇IP地址解析 [root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost…

【Java后端】MyBatis 与 MyBatis-Plus 如何防止 SQL 注入?从原理到实战

在日常开发中,SQL 注入是一种常见但危害巨大的安全漏洞。如果你正在使用 MyBatis 或 MyBatis-Plus 进行数据库操作,这篇文章将带你系统了解:这两个框架是如何防止 SQL 注入的,我们又该如何写出安全的代码。 什么是 SQL 注入&#…

数据分析案例:医疗健康数据分析

目录 数据分析案例:医疗健康数据分析1. 项目背景2. 数据加载与预处理2.1 加载数据2.2 数据清洗3. 探索性数据分析(EDA)3.1 再入院率概览3.2 按年龄分组的再入院率3.3 住院时长与再入院4. 特征工程与可视化5. 模型构建与评估5.1 数据划分5.2 训练逻辑回归5.3 模型评估6. 业务…

3台CentOS虚拟机部署 StarRocks 1 FE+ 3 BE集群

背景:公司最近业务数据量上去了,需要做一个漏斗分析功能,实时性要求较高,mysql已经已经不在适用,做了个大数据技术栈选型调研后,决定使用StarRocks StarRocks官网:StarRocks | A High-Performa…

软件设计师/系统架构师---计算机网络

概要 什么是计算机网络? 计算机网络是指将多台计算机和其他设备通过通信线路互联,以便共享资源和信息的系统。计算机网络可以有不同的规模,从家庭网络到全球互联网。它们可以通过有线(如以太网)或无线(如W…

1.5软考系统架构设计师:架构师的角色与能力要求 - 超简记忆要点、知识体系全解、考点深度解析、真题训练附答案及解析

超简记忆要点 角色职责 需求规划→架构设计→质量保障 能力要求 技术(架构模式/性能优化) 业务(模型抽象→技术方案) 管理(团队协作/风险控制) 知识体系 基础:CAP/设计模式/网络协议案例&am…

基于STM32的汽车主门电动窗开关系统设计方案

芯片和功能模块选型 主控芯片 STM32F103C8T6:基于 ARM Cortex - M3 内核,有丰富的 GPIO 接口用于连接各类外设,具备 ADC 模块可用于电流检测,还有 CAN 控制器方便实现 CAN 总线通信。它资源丰富、成本低,适合学生进行 DIY 项目开发。按键模块 轻触按键:用于控制车窗的自…

第十三届蓝桥杯 2022 C/C++组 修剪灌木

目录 题目: 题目描述: 题目链接: 思路: 核心思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: P8781 [蓝桥杯 2022 省 B] 修…

6.学习笔记-SpringMVC-拦截器(P71-P74)

1.拦截器简介 拦截器的底层思想是AOP思想 2.拦截器入门案例 (一)制作拦截器的功能类 一般情况下,拦截器都是给表现层用的,所以创建在controller下。 (二)配置拦截器的执行位置 在projectinterceptor.…

GAIA-2:用于自动驾驶的可控多视图生成世界模型

25年3月来自英国创业公司 Wayze 的论文“GAIA-2: A Controllable Multi-View Generative World Model for Autonomous Driving”。(注:23年9月其发布GAIA-1) 生成模型为模拟复杂环境提供一种可扩展且灵活的范例,但目前的方法不足…

《算法笔记》10.4小节——图算法专题->最短路径 问题 D: 最短路径

题目描述 有n个城市m条道路&#xff08;n<1000, m<10000)&#xff0c;每条道路有个长度&#xff0c;请找到从起点s到终点t的最短距离和经过的城市名。 输入 输入包含多组测试数据。 每组第一行输入四个数&#xff0c;分别为n&#xff0c;m&#xff0c;s&#xff0c;t…

深度解析 Kubernetes 配置管理:如何安全使用 ConfigMap 和 Secret

目录 深度解析 Kubernetes 配置管理&#xff1a;如何安全使用 ConfigMap 和 Secret一、目录结构二、ConfigMap 和 Secret 的创建1. 创建 ConfigMapconfig/app-config.yaml&#xff1a;config/db-config.yaml&#xff1a; 2. 创建 Secretsecrets/db-credentials.yaml&#xff1a…

数据库之mysql优化

1.引擎&#xff1a; 1.1查看引擎&#xff1a; mysql> show engines; mysql> SHOW VARIABLES LIKE %storage_engine%; mysql> show create table t1; ---查看建表信息1.2 临时指定引擎&#xff1a; mysql> create table innodb1(id int)engineinnodb; 1.3修改…

【Yii2】Yii2框架的一次BUG排查

因为项目需要&#xff0c;最近学习了使用Yii2框架的使用。但毕竟刚上手&#xff0c;好多地方都不清楚。所以就有了这个博客。 1、需求 有这么一个需求&#xff1a; 后台需要访问用户的一个界面。为了界面不出问题&#xff0c;需要传递一个真实存在的Token。但对这个Token没有…

卡尔曼滤波解释及示例

卡尔曼滤波的本质是用数学方法平衡预测与观测的可信度 &#xff0c;通过不断迭代逼近真实状态。其高效性和鲁棒性&#xff0c;通常在导航定位中&#xff0c;需要融合GPS、加速度计、陀螺仪、激光雷达或摄像头数据&#xff0c;来提高位置精度。简单讲&#xff0c;卡尔曼滤波就是…

Python 学习路线与笔记跳转(持续更新笔记链接)

这里写目录标题 Python 学习路线与笔记Python 简介学习路线第一阶段&#xff1a;Python 基础第二阶段&#xff1a;Python 进阶第三阶段&#xff1a;实用库与框架第四阶段&#xff1a;DevOps 与 Python第五阶段&#xff1a;最佳实践与高级技巧 学习资源官方资源在线学习平台书籍…

决策卫生问题:考公考编考研能补救高考选取职业的错误吗

对于决策者来说&#xff0c;“认识你自己”是一个永恒的主题&#xff1b;警惕认知中的缺陷&#xff0c;比什么都重要。在判断与决策问题上&#xff0c;管理者和专业人士往往都非常自信。人类远远不如我们想象的那么理性&#xff0c;人类的判断也远远不如我们想象的那么完美。在…

React19源码阅读之commitRoot

commitRoot入口 在finishConcurrentRender函数&#xff0c;commitRootWhenReady函数&#xff0c;commitRoot函数。 commitRoot流程图 commitRoot函数 commitRoot 函数是 React 渲染流程中用于提交根节点的关键函数。它的主要作用是设置相关的优先级和状态&#xff0c;然后调…