spark实验求TOP值

server/2024/11/14 20:58:52/

实验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 /usr/local/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 

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

 

创建项目文件夹

在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 + 1println(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.ppmy.cn/server/19945.html

相关文章

OpenHarmony 启动流程优化

目前rk3568的开机时间有21s,统计的是关机后从按下 power 按键到显示锁屏的时间,当对openharmony的系统进行了裁剪子系统,系统app,禁用部分服务后发现开机时间仅仅提高到了20.94s 优化微乎其微。在对init进程的log进行分析并解决其…

微信小程序的开发

1.了解项目的基本组成结构 pages 用来存放所有小程序的页面 utils 用来存放工具性质的模块(例如:格式化时间的自定义模块) app.js 小程序项目的入口文件 app.json 小程序项目的全局配置文件 app.wxss 小程序项目的全局样式文件 project.config.json 项目的配置文件 sitem…

数组和指针经典笔试题讲解

目录 创作不易,如对您有帮助,还望一键三连,谢谢!!! 1.sizeof和strlen的对比 1.1sizeof 1.2strlen 1.3sizeof和strlen对比 2.数组笔试题讲解 数组名的理解 2.1一维数组 2.2字符数组 题目一&#x…

AUTOSAR-SD篇

1 概述 服务发现模块的主要任务是管理在车内通信中被称为服务的功能实体的可用性,以及控制事件消息的发送行为。只允许向需要这些事件消息的接收器发送事件消息(发布/订阅)。 这里描述的解决方案也被称为SOME/IP-SD(基于IP -服务发…

【C语言】文件操作(1)

为什么使⽤⽂件? 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的…

LM2576D2TR4-5G 3.0安15伏降压开关稳压器 PDF中文资料_参数_引脚图

LM2576D2TR4-5G 规格信息: 制造商:ON Semiconductor 产品种类:开关稳压器 RoHS:是 装置风格:SMD/SMT 封装 / 箱体:TO-263-5 输出电压:5 V 输出电流:3 A 输出端数量:1 Output 最大输入电压:45 V 拓扑结构:Buck 最小输入电压:7 V 开关频率:52 kHz 最小工作…

tcp服务器端与多个客户端连接

如果希望Tcp服务器端可以与多个客户端连接,可以这样写: tcpServernew QTcpServer(this);connect(tcpServer,SIGNAL(newConnection()),this,SLOT(onNewConnection())); void MainWindow::onNewConnection() {QTcpSocket *tcpSocket;//TCP通讯的Sockettcp…

玄子Share-PXE高效批量网络装机

玄子Share-PXE高效批量网络装机 部署PXE远程安装服务 PXE 概述 PXE(Preboot eXcution Environment) 预启动执行环境,在操作系统之前运行 服务端 运行DHCP服务,用来分配地址、定位引导程序运行TFTP服务,提供引导程…