Spark安装、解压、配置环境变量、WordCount

Spark

小白的spark学习笔记 2024/5/30 10:14

文章目录

  • Spark
    • 安装
      • 解压
      • 改名
      • 配置spark-env.sh
      • 重命名,配置slaves
      • 启动
      • 查看
      • 配置环境变量
    • 工作流程
    • maven
      • 创建maven项目
      • 配置maven
      • 更改pom.xml
    • WordCount
    • 按照用户求消费额
    • 上传到spark集群上运行

安装

上传,直接拖拽

解压

tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /usr/local/

改名

cd /usr/local
mv spark-2.1.1-bin-hadoop2.7/ spark

cd spark/conf
mv spark-env.sh.template spark-env.sh

配置spark-env.sh

vi spark-env.sh

在该配置文件中添加如下配置

export JAVA_HOME=/usr/local/jdk

export SPARK_MASTER_IP=centos1

export SPARK_MASTER_PORT=7077 master work通信用

保存退出

在这里插入图片描述

上面三条分别是

jdk的位置

主机名(查询主机名hostname)

端口

重命名,配置slaves

mv slaves.template slaves
vi slaves

在该文件中添加子节点所在的位置(Worker节点)

将配置好的Spark拷贝到其他节点上

启动

命令也是start-all.sh,跟Hadoop的启动命令冲突,所以改一下名

在/usr/local/spark/sbin下

mv start-all.sh start_all.sh
mv stop-all.sh stop_all.sh

查看

启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://centos1:8080/

配置环境变量

vim /etc/profile

在这里插入图片描述

source /etc/profile

工作流程

在这里插入图片描述

maven

下载jar,根据groupid,artifactld,version

创建maven项目

在这里插入图片描述

配置maven

在这里插入图片描述

更改pom.xml

WordCount

求单词出现次数

import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession

object HelloWorld {
  def main(args: Array[String]): Unit = {
    val config=new SparkConf()
    //是用来创建spark上下文driver
    val spark=SparkSession.builder().master("local[*]").config(config).appName("hello").getOrCreate()
    val rddLine: RDD[String] = spark.sparkContext.textFile("D:\\Study\\Hadoop\\input\\word.txt")
    //求单词出现的次数
    
    //1.
//    rddLine.flatMap(x=>x.split(" ")).map(x=>(x,1)).groupByKey().map(x=>(x._1,x._2.sum)).foreach(x=>println(x))
//    rddLine.flatMap(x=>x.split(" ")).map(x=>(x,1)).groupByKey().foreach(x=>println(x+"-----bkbk"))
//    //这个groupByKey方法直接按照key来分组,后面的集合是key对应的值的集合
//    //(ss,CompactBuffer(1, 1))-----bkbk
    
    //2.用reduce直接做
    rddLine.flatMap(x=>x.split(" ")).map(x=>(x,1)).reduceByKey((x,y)=>x+y).foreach(x=>println(x))
  }
}

按照用户求消费额

import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession
//数据如下
//1,2020-12-12,10
//1,2020-12-13,16
//2,2020-12-12,89
//2,2020-12-13,22
object SumByUser {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf()
    val spark=SparkSession.builder().master("local[*]").config(conf).appName("hello").getOrCreate()//创建spark上下文driver
    val rddLine: RDD[String] = spark.sparkContext.textFile("D:\\Study\\Hadoop\\input\\sumbyuser.txt")//文件读入地址
    //按","分割,取第一列和第三列,reducebykey
    rddLine.map(x=>x.split(",")).map(x=>(x(0),x(2).toInt)).reduceByKey((x,y)=>x+y).foreach(x=>println(x))

  }
}

上传到spark集群上运行

代码中去掉master,改一下文件读入路径

打包

import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.SparkSession
//数据如下
//1,2020-12-12,10
//1,2020-12-13,16
//2,2020-12-12,89
//2,2020-12-13,22
object SumByUser {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf()
    //如果提交到spark集群上运行,就不需要master,文件地址也要改
    val spark=SparkSession.builder().config(conf).appName("hello").getOrCreate()//创建spark上下文driver
    val rddLine: RDD[String] = spark.sparkContext.textFile(args(0))//文件读入地址
    //按","分割,取第一列和第三列,reducebykey
    rddLine.map(x=>x.split(",")).map(x=>(x(0),x(2).toInt)).reduceByKey((x,y)=>x+y).foreach(x=>println(x))

  }
}

在这里插入图片描述

把jar和数据传到虚拟机上

执行

类名、master、内存大小、核的个数、jar的名、数据的名

spark-submit --class com.oracle.spark.SumByUser --master spark://centos1:7077 --executor-memory 500M --total-executor-cores 2 jt_sparkz-1.0-SNAPSHOT-jar-with-dependencies.jar sumbyuser.txt 

类名

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RPA-UiBot6.0数据分发机器人—工作通知一键分发

前言 📢友友们本篇博客的焦点机器人:信息群发机器人👋 (可以参考小北之前的微信群发助手和校园网更新提示助手两篇博客)Uibot (RPA设计软件)智能识别信息+微信群发助手(升级版&…

Tomcat配置中最大线程数和句柄数分别意义和关系

哈喽,大家好,我是木头左! 在Tomcat服务器的配置中,有两个参数是非常重要的:最大线程数和最大句柄数。这两个参数对于服务器的性能和稳定性有着至关重要的影响。本文将详细介绍这两个参数的意义和关系。 1. 最大线程数 …

样式的双向绑定的2种方式,实现样式交互效果

与样式标签实现双向绑定 通过布尔值来决定样式是出现还是消失 show代表着布尔值,show的初始值是false所以文本不会有高亮的效果,当用户点击了按钮,就会调用shows这个函数,并将show的相反值true赋值并覆盖给show,此时show的值为tru…

LangChain入门学习笔记(二)——LangChain表达式语言(LCEL)

基于LangChain框架编写大模型应用的过程就像垒积木,其中的积木就是Prompts,LLMs和各种OutputParser等。如何将这些积木组织起来,除了使用基本Python语法调用对应类的方法,一种更灵活的方法就是使用位于LangChain-Core层中的LCEL&a…

一篇文章彻底搞懂Maven

一、Maven简介 1-Maven介绍 https://maven.apache.org/what-is-maven.html Maven 是自动化构建工具。 Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。Maven 这个单词的本意是:专家,内…

这些代码是APP自动化插件开发的关键!

在移动互联网高速发展的今天,APP的自动化插件开发成为了提升应用功能性和用户体验的重要手段。 而在这一过程中,五段源代码的巧妙运用往往能够起到事半功倍的效果,本文将为您科普分享这五段关键的源代码,帮助您更好地理解和应用自…

【Unity】RPG2D龙城纷争(二)关卡、地块

更新日期:2024年6月12日。 项目源码:在第四章发布 索引 简介地块(Block)一、定义地块类二、地块类型三、地块渲染四、地块索引 关卡(Level)一、定义关卡类二、关卡基础属性三、地块集合四、关卡初始化五、关…

EDEX-UI这个终端模拟器

eDEX-UI 是一款开源、免费、跨平台的全屏终端模拟器和系统监视器,外观和操作界面极其科幻,灵感来自电影《创战纪》的会议室特效场景。作者倾注了大量心血,使得它不仅拥有酷炫的操作界面,还具备清晰爽脆的音效。 优点: …

使用 PNPM 从 0 搭建 monorepo,测试并发布

1 目标 通过 PNPM 创建一个 monorepo(多个项目在一个代码仓库)项目,形成一个通用的仓库模板。 这个仓库既可以用于公司存放和管理所有的项目,也可以用于将个人班余的所有积累整合其中。 2 环境要求 核心是 PNPM 和 Node.js&…

万字长文讲解Linux内存管理:伙伴系统

1. buddy system简介: 伙伴系统是内核中用来管理物理内存的一种算法,我们知道内存中有一些是被内核代码占用,还有一些是被特殊用途所保留,那么剩余的空闲内存都会交给内核内存管理系统来进行统一管理和分配。 内核中会把内存按照…

nodejs——原型链污染

一、引用类型皆为对象 原型和原型链都是来源于对象而服务于对象的概念,所以我们要先明确一点: JavaScript中一切引用类型都是对象,对象就是属性的集合。 Array类型、Function类型、Object类型、Date类型、RegExp类型等都是引用类型。 也就…

Codeforces Round 950 (Div. 3) A~F

A.Problem Generator(遍历) 题意: 弗拉德计划在下个月举行 m m m轮比赛。每轮比赛应包含一个难度为"A"、“B”、“C”、“D”、“E”、"F"和"G"的问题。 弗拉德已经有了一个 n n n个问题的问题库&#xff0…

easyrecovery专业版破解无需注册绿色版免费下载 easyrecovery16数据恢复软件永久激活码密钥百度网盘crack文件

EasyRecovery (易恢复中国)是由全球著名数据厂商Ontrack 出品的一款数据文件恢复软件。支持恢复不同存储介质数据:硬盘、光盘、U盘/移动硬盘、数码相机、Raid文件恢复等,能恢复包括文档、表格、图片、音视频等各种文件。 开发背景…

解决uview2中u--input输入框禁用状态下click事件不生效

需求:想要点击输入框,展示下拉内容 之前使用uview1是可以直接在input上添加click事件(禁用和只读情况下都不影响) 但是在uview2上直接写click不生效 解决方式:直接在写click.native"xxx" 代码部分&#x…

什么是有限状态机

标准答案 有限状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型 我自己的理解 有限状态机是状态的改变,比如门的开关、灯的开关等。 执行某些操作,比如推门或按下开关,状态会发生切换。 在这里,我编写一…

LIUNX系统编程:可重入函数volatile

目录 1.概念 2.volatile关键字 1.概念 在执行流执行到mian函数,insert函数中的1号位置的时候,突然就陷入内核,处理信号,执行信号自定义方法,这个方法调用的也是insert,执行完之后,导致了n2的节…

音视频文件格式转换神器(常用JPG、PNG、MP4、MP3转换等)

一、简介 1、一款完全免费、无广告且开源的格式转换工具,支持超过200种文件格式的转换。它能够处理视频、音频、图像、文档、电子书等多种类型的文件,功能非常强大。该软件由GitHub上的一位开发者发布,目的是为了让用户能够轻松地完成文件转换…

C++升级软件时删除老版本软件的桌面快捷方式(附源码)

删除桌面快捷方式其实是删除桌面上的快捷方式文件,那我们如何去删除桌面快捷方式文件呢?软件可能已经发布过多个版本,其中的一些版本的快捷方式文件名称可能做了多次改动,程序中不可能记录每个版本的快捷方式名称,没法直接去删除快捷方式文件。本文就给出一种有效的处理办…

25.入口点注入

钩子注入是利用SetWindowsHookEx函数这是一个被动的注入方式,入口点注入是一个主动注入,就是做这件事什么都不为就是为了注入,入口点注入有很多优势比如说做一个游戏的多开器,多开的检测事情是在游戏一启动的时候完成的&#xff0…

流程控制基本概念

流程控制基本概念 默认情况下程序运行后,系统会按书写顺序从上至下依次执行程序中的每一行代码。但是这并不能满足我们所有的开发需求, 为了方便我们控制程序的运行流程,C语言提供3种流程控制结构,不同的流程控制结构可以实现不同的运行流程…