spark实验求TOP值

news2025/1/13 9:36:47

实验1:求TOP

已知存在两个文本文件,file1.txt和file2.txt,内容分别如下:

file1.txt  

1,1768,50,155

2,1218, 600,211

3,2239,788,242

4,3101,28,599

5,4899,290,129

6,3110,54,1201

7,4436,259,877

8,2369,7890,27

file2.txt

100,4287,226,233

101,6562,489,124

102,1124,33,17

103,3267,159,179

104,4569,57,125

105,1438,37,116

以上两个文件所存储的数据字段的意义为:orderid, userid, payment, productid

请使用Spark编程计算求Top N个payment值,N值取5,结果如下:

实验步骤 

将文件上传HDFS

创建example文件夹

hadoop fs -mkdir  hdfs://ly1:9000/example

注:在file1.txt file2.txt 所在的文件夹下上传,或者输入绝对路径

hadoop fs -put file* hdfs://ly1:9000/example

安装sbt

在/bigdata目录下新建sbt目录

mkdir /bigdata/sbt

Download | sbt (scala-sbt.org)

下载sbt-1.9.9.tgz

xftp上传到虚拟机

解压

tar -zxvf sbt-1.9.9.tgz -C /bigdata/sbt

 接着在安装目录中使用下面命令创建一个Shell脚本文件,用于启动sbt:

vim /bigdata/sbt/sbt
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

 保存后,为该Shell脚本文件增加可执行权限:

chmod u+x /usr/local/sbt/sbt

使用如下命令查看sbt版本信息

sbtVersion 

出现以下信息则表示安装成功 

如果出现以下问题

Error:Unable to access jarfile ./sbt-launch.jar 

将sbt的bin目录下的 sbt-launch.jar复制到sbt根目录即可

在sbt目录下执行

cp ./bin/sbt-launch.jar ./

创建项目文件夹

在bigdata目录下创建sparkapp文件夹,这是应用程序根目录

mkdir /bigdata/sparkapp

创建所需的文件夹结构

mkdir -p ./sparkapp/src/main/scala

Scala文件

建立一个名为TopN.scala的文件,写入以下内容

//TopN.scala
import org.apache.spark.{SparkConf, SparkContext}
object TopN {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("TopN").setMaster("local")
    val sc = new SparkContext(conf)
    sc.setLogLevel("ERROR")
    val lines = sc.textFile("hdfs:/xxx/:9000/examples",2)//修改为自己的节点HDFS地址
    var num = 0;
    val result = lines.filter(line => (line.trim().length > 0) && (line.split(",").length == 4))
      .map(_.split(",")(2))
      .map(x => (x.toInt,""))
      .sortByKey(false)
      .map(x => x._1).take(5)
      .foreach(x => {
        num = num + 1
        println(num + "\t" + x)
      })
  }
}

TopN.sbt

在程序根目录下新建TopN.sbt文件并添加以下信息

name ="TopN"
version :"1.0"
scalaVersion :="2.12.12"
libraryDependencies +"org.apache.spark"%%"spark-core"%"3.0.0"

spark为3.0版本,所以scala的版本要2.12及以上 ,spark-core的版本是spark的版本

find .检查项目结构

打包

/bigdata/sbt/sbt package

运行

/bigdata/spark/bin/spark-submit --class "TopN" /bigdata/sparkapp/target/scala-2.12/topn_2.12-1.0.jar

 

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

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

相关文章

太速科技-基于6U CPCIe的TMS320C6678+KU060的信号处理板卡

基于6U CPCIe的TMS320C6678KU060的信号处理板卡 一、板卡概述 基于6U CPCIe的C6678KU060的信号处理板卡是新一代FPGA的高性能处理板卡。板卡采用一片TI DSP TMS320C6678和一片Xilinx公司 XCKU060-2FFVA1156I作为主处理器,Xilinx 的Aritex XC7A200T作为辅助处…

Android手势识别面试问题及回答

问题 1: 如何在Android中实现基本的手势识别? 答案: 在Android中,可以通过使用GestureDetector类来实现基本的手势识别。首先需要创建一个GestureDetector的实例,并实现GestureDetector.OnGestureListener接口来响应各种手势事件&#xff0c…

怎么制作网站

网站制作是一项需要技术和创意的工作。这篇文章将向你介绍如何制作一个网站,包括网站规划、网站设计、内容编写和网站发布等方面。 首先,要制作一个网站,你需要一个域名和一个主机。域名是网站的地址,而主机是存储网站所有的文件和…

【GAMES 101】图形学入门——着色(Shading)

定义:将不同材质内容应用于不同物体对象上的过程。着色只考虑着色点的存在,不考虑其他物体的遮挡等,因此不考虑阴影处理 一些前期内容的定义: 着色点(Shading Point)观测方向(Viewer Directio…

Winfrom —— 打印水仙花数

输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。 例如,153是一个水仙花数,因为15315+3 解题思路:水仙花数的解题思路是把给出的某个三位数的个位、十位、百位分别拆分&#…

【数据结构】顺序表专题

前言 本篇文章我们来进行有关顺序表的专题训练,让我们一起来看一下有关顺序表的算法题 💓 个人主页:小张同学zkf ⏩ 文章专栏:数据结构 📝若有问题 评论区见 🎉欢迎大家点赞👍收藏⭐文章 1.移除…

激光干涉仪应用拓展:透镜曲率半径测量

透镜是由透明物质(如玻璃、水晶等)制成的一种光学元件,广泛应用于安防、车载、数码相机、激光、光学仪器等各个领域。 曲率半径是透镜设计与制造的一个重要参数,在生产制造过程中常使用菲索型激光干涉仪通过测试干涉条纹&#xff…

面试经验分享 | 通关某公司面试靶场

0x00:探测IP 首先打开时候长这个样,一开始感觉是迷惑行为,试了试/admin,/login这些发现都没有 随后F12查看网络,看到几个js文件带有传参,就丢sqlmap跑了一下无果 随后也反查了域名一下,发现没有域名&#…

k8s环境prometheus operator监控集群外资源

文章目录 k8s环境添加其他节点基于prometheus operator k8s环境prometheus operator添加node-exporter方式一:通过 ServiceMonitor 方式可以写多个监控node节点运行 external-node.yaml查看资源有没有被创建热更新 外部需要被监控服务器安装 node-exporterdocker 方…

【蓝桥杯C++A组省三 | 一场勇敢的征途与致19岁的信】

随着4.13西大四楼考场的倒计时结束… 就这样蓝桥杯落幕了 省三的名次既满足又不甘心,但又确乎说得上是19岁途中的又一枚勋章 从去年得知,纠结是否要报名、到寒假开始战战兢兢地准备、陆续开始创作博客,记录好题和成长……感谢你们的关注&…

【消息队列】延迟消息

延时消息 延迟消息死信交换机延迟消息的插件 延迟消息 生产者发送消息时指定一个时间,消费者不会立刻收到消息,而在指定时间之后才收到消息 比如说演唱会的票,抢上了但是迟迟未支付,但是库存已经占用,就需要用到延迟消…

linux 搭建知识库文档系统 mm-wiki

目录 一、前言 二、常用的知识库文档工具 2.1 PingCode 2.2 语雀 2.3 Tettra 2.4 Zoho Wiki 2.5 Helpjuice 2.6 SlimWiki 2.7 Document360 2.8 MM-Wiki 2.9 其他工具补充 三、MM-Wiki 介绍 3.1 什么是MM-Wiki 3.2 MM-Wiki 特点 四、搭建MM-Wiki前置准备 4.1 前置…

【Harmony3.1/4.0】笔记七-选项卡布局

概念 当页面信息较多时,为了让用户能够聚焦于当前显示的内容,需要对页面内容进行分类,提高页面空间利用率。Tabs组件可以在一个页面内快速实现视图内容的切换,一方面提升查找信息的效率,另一方面精简用户单次获取到的…

前端css中盒子模型的各种属性

前端css中盒子模型 一、前言二、流程图三、盒子模型的各属性(一)、模型计算方式(box-sizing)(二)、边框(border)1.边框的颜色(border-color)2.边框的宽度&…

刚刚!MySQL8.4.0 LTS发布,接着再探

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

【开发工具】pythontutor——在线内存可视化工具

笔者在学习RISC-V时,希望找到一款可视化的内存工具,遗憾目前还未找到。发现了pythontutor这个网站,可以对C、python等多种语言进行内存可视化。结果似乎是x86架构的,符合小端存储。 贴一下网址,原准备依据开源版本进行…

python基础知识点(蓝桥杯python科目个人复习计划66)

今日复习内容:算法双周赛 第一题:疯狂星期六 题目描述: 麦肯鸡是一家名声在外的汉堡店,他们最近推出了一份名为vivo50的套餐,只需要在门口大声喊出vivo50,就可以获得这个套餐。 现在,请你打…

使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B

2024年4月18日,meta开源了Llama 3大模型[1],虽然只有8B[2]和70B[3]两个版本,但Llama 3表现出来的强大能力还是让AI大模型界为之震撼了一番,本人亲测Llama3-70B版本的推理能力十分接近于OpenAI的GPT-4[4],何况还有一个4…

ubuntu搭建jupyter_notebook服务器

环境:ubuntu 22.04 目录 环境:ubuntu 22.04 一、创建一个anaconda用户 创建用户condaUser 为用户condaUser设置密码 开放opt文件夹的权限 登录condaUser用户 二、安装anaconda 下载anaconda 安装anaconda 三、添加环境变量 四、anaconda换源 …

Linux 麒麟系统安装

国产麒麟系统官网地址: https://www.openkylin.top/downloads/ 下载该镜像后,使用VMware部署一个虚拟机: 完成虚拟机创建。点击:“开启此虚拟机” 选择“试用试用开放麒麟而不安装(T)”,进入op…