Scala配置和Spark配置以及Scala一些函数的用法(附带词频统计实例)

news2024/10/6 0:29:15

文章目录

  • 配置Spark
  • 配置Scala
  • 生成RDD
  • filter过滤器
  • map方法
  • flatMap方法
  • reduceByKey
  • spark下wordcount程序
  • 参考

先给出spark和Scala的下载地址,这是我用的版本
https://pan.baidu.com/s/1rcG1xckk3zmp9BLmf74hsg?pwd=1111
也可以自己去官网下载。

配置Spark

解压文件到software文件夹中

tar -zxvf spark-3.1.2-bin-hadoop3.2.tgz 

验证:进入spark软件目录下的bin:执行./spark-shell
在这里插入图片描述
在家目录下,编辑.bashrc,添加如下内容:

export SPARK_HOME=/home/bigdata3/software/spark-3.1.2-bin-hadoop3.2/
export PATH=$SPARK_HOME/bin:$PATH

保存退出后,重开一个终端,直接执行:spark-shell
在这里插入图片描述
配置成功

配置Scala

下载,解压缩,编辑.bashrc,添加如下内容:

export SCALA_HOME=/home/bigdata3/software/scala-2.12.15
export PATH=$SCALA_HOME/bin:$PATH

保存退出后,重开一个终端,直接执行:scale
在这里插入图片描述
配置成功

生成RDD

1)从本地文本文件生成RDD
命令:textFile(URI)
例如:

val myRdd=sc.textFile("file:///home/bigdata3/Desktop/a1.txt")
//                        协议       路径
myRdd.collect()

在这里插入图片描述

2)从hdfs文本文件生成RDD

val hdfsRdd=sc.textFile("hdfs://172.21.6.156:9000/0126/a.txt")
                                    //namenode       路径
hdfsRdd.collect()

在这里插入图片描述

filter过滤器

Rdd数据过滤:

object spark1 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("spark1").setAppName("icy hunter").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val myRdd = sc.textFile("file:///home/bigdata3/Desktop/a1.txt")
    val filterRdd = myRdd.filter(x=>x.contains("AABB"))
    val out1 = filterRdd.collect()
    out1.foreach(println)
    Thread.sleep(1000 * 60 * 5)
  }
}

这样能够对文件的内容进行过滤,只输出含有“AABB”的内容。

map方法

将Rdd中的每个元素,送入到参数function处理。
使用map将文本文件中的每个单词分开,效果不理想。
在这里插入图片描述
因为当分词后,会自动生成一个array,不方便后续解析。

flatMap方法

使用flatMap将文本文件中的每个单词分开:
在这里插入图片描述

reduceByKey

将(k, v)对按照参数函数进行处理

spark下wordcount程序

分词,构造键值对(词,1),键值对相加
(a, 1)+ (a, 1) = (a, 2)

程序:非链式写法:

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("spark1").setAppName("icy hunter").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val myRdd = sc.textFile("file:///home/bigdata3/Desktop/a1.txt", 3) //定义Rdd
    val flatmap1 = myRdd.flatMap(_.split(" ")) //按空格分词
    val mapKV = flatmap1.map((_ ,1))// 创建键值对
    val reduce1 = mapKV.reduceByKey(_+_) //将相同键值的键值对相加
    reduce1.foreach(println) //输出
    Thread.sleep(1000 * 60 * 5)
  }

程序:链式写法:

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("spark1").setAppName("icy hunter").setMaster("local[*]")
    val sc = new SparkContext(conf)
    sc.textFile("file:///home/bigdata3/Desktop/a1.txt", 3).flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).foreach(println)
    Thread.sleep(1000 * 60 * 5)
  }

可以想想,如果用java来写,得多麻烦,所以Scala确实轻巧很多。

参考

大数据课的笔记。

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

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

相关文章

public,private,protected,default的区别

public public(公开)表示任何人都可以访问和使用该元素; public class Test {public static void main(String[] args) {Person pnew Person();System.out.println(p.name);//输出小明} } class Person{public String name"小明"…

Go 开发环境安装之Goland和vscode

一、前言 Go语言或将成为新的主力开发语言,Go是google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,所以我们有必要学习并掌握它。第一件事情,就是把环境搭建起来,大家可以跟着步骤一起将Go语…

【计算机网络】数据链路层:点对点协议PPP

对于点对点链路,目前使用最为广泛的数据链路层协议是点对点协议PPP。 简单(首要要求) 封装成帧:保证数据传输的透明性 多种网络层协议:能够在同一条物理链路上同时支持多种网络层协议。 多种类型链路:能…

2020牛客暑期多校训练营(第十场)I.Tournament(构造/贪心)

题目 t(1<t<30)组样例&#xff0c;n(2<n<300)个球队&#xff0c; 每个球队都和其它所有球队比一场&#xff0c;一共有场比赛。 每天只比一场比赛&#xff0c;每个球队会在其第一场比赛开始时到&#xff0c;最后一场比赛后走。 安排一个日程表&#xff0c;使所有…

Linux多线程C++版(五) 线程同步和线程互斥

目录1.线程同步和线程互斥2.线程互斥案例---ATM取钱--没有使用互斥锁3.线程互斥----互斥锁(互斥量)4.互斥锁创建和销毁5.互斥锁上锁和解锁6.线程互斥案例---ATM取钱--使用互斥锁7.互斥锁属性创建和销毁8.互斥锁属性之一---进程共享属性操作9.互斥锁属性之一----互斥锁类型操作1…

[附源码]计算机毕业设计JAVA人口老龄化社区服务与管理平台

[附源码]计算机毕业设计JAVA人口老龄化社区服务与管理平台 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; …

Apollo 应用与源码分析:Monitor监控 - Monitor_managerecurrent_runner分析

目录 monitor_manager 分析 结构分析 单例模式宏定义 描述现在的系统状态 HMI上显示的状态信息 仿真判断状态 判断是不是自动驾驶状态 日志缓存 当前node 所有monitor 的reader 管理map 开启一次监控 start frame分析 end frame分析 recurrent_runner 分析 结构…

计算机键盘用途及快捷键

用途&#xff1a; 电脑键盘上有那么多按键&#xff0c;到底都有什么作用呢&#xff1f; 几个重要的按键&#xff0c;一起来了解一下吧。 最上面一排&#xff1a; F1帮助 F2改名 F3搜索 F4地址 F5刷新 F6切换 F10菜单 1、键盘中间区域的所有输入按键。 一共是26个英文字母…

初次接触氛围系统架构,聊聊我这三个月的理解

本文主要介绍了作者对于氛围中心的业务理解。从氛围的概念出发&#xff0c;阐述了氛围系统的必要性&#xff0c;然后展示了配置端的数据写入、调用端的配置读取等氛围系统的架构细节&#xff0c;最后作者提出了一些对于氛围中心未来的想法和思考。概述▐ 氛围的概念氛围是能够…

V5.1.1,新版发布|软件安全大于一切

主要内容&#xff1a;本次版本除了常规的BUG修复&#xff0c;最重要的是对系统安全全面升级&#xff0c;加强了系统安全检测机制&#xff0c;更新了Thinkphp核心版本&#xff0c;强化了密码等安全。 本次新增了在线用户&#xff0c;支持在线用户下强制下线处理。 本次新增的超级…

java项目-第161期ssm弹幕视频网站系统_ssm毕业设计_计算机毕业设计

java项目-第161期ssm弹幕视频网站系统_ssm毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm弹幕视频网站》 该项目分为2个角色&#xff0c;管理员、用户。 用户可以浏览前台视频信息、商品信息&#xff0c;并且可以进行购买。 管理员角色拥有的权限最…

基于jquery 实现导航条高亮显示的两种方法

本篇文章是基于jquery实现导航菜单高亮显示&#xff0c;当点击不同导航菜单实现当前点击的菜单是高亮的&#xff0c;有需要的朋友可以关注下本文 实现原理&#xff1a;当选中当前元素时&#xff0c;给当前元素添加样式&#xff0c;同级元素移除样式。 点击不同的导航菜单实现…

基于SpringBoot的校园志愿者管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SpringBoot 前端&#xff1a;HTML、Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#…

Java23种设计模式之第三弹-工厂模式

说起工厂&#xff0c;我们第一反应是制作什么东西的吧~。在现实生活中&#xff0c;工厂 &#xff0c; 就是用于生成一些特定事物的厂商。 回到我们此处说的工厂模式上&#xff0c;什么是工厂模式呢 &#xff0c; 顾名思义&#xff0c;就是生成我们的对象的类就会称成为工厂。 …

机器学习模型与backtrader框架整合

原创文章第116篇&#xff0c;专注“个人成长与财富自由、世界运作的逻辑&#xff0c; AI量化投资”。 北京疫情似乎还没有到拐点&#xff0c;但这三天结束后应该会到来。 今天重点说说&#xff0c;机器学习模型整合到我们的回测框架中&#xff0c;并与backtrader连接起来回测…

【Python模块】logging 日志模块

当入门一门语言时&#xff0c;最简单最直观的打印日志信息方式就是使用 print() 函数了&#xff0c;而这毕竟是自己练习和测试才会这样做。当参与项目时一定会去使用日志模块实现日志信息的打印和记录&#xff0c;而 Python 提供了内置的日志模块 logging&#xff0c;有必要深入…

解决每次打开pycharm都特别慢的几个方法

Python编写时&#xff0c;通常都会用vscode和pycharm两个工具&#xff0c;使用过程中&#xff0c;发现每次打开pycharm都特别特别慢&#xff0c;有时候要等十来分钟。相信大家可能都有遇到一样的情况&#xff0c;所以分享我自己的解决方法给大家参考。 1&#xff0c;每次需要关…

[附源码]java毕业设计置地房屋租赁信息系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

嵌入式驱动初级-中断

文章目录前言一、Linux 中断 API 函数二、Linux 中断实现三、中断上半部与下半部四、下半部机制之tasklet ---- 基于软中断五、按键中断下半部机制之tasklet六、下半部机制之workqueue ----- 基于内核线程七、按键中断下半部机制之workqueue前言 记录嵌入式驱动学习笔记 一、Li…

一文带你深入理解【Java基础】· 枚举类

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…