spark实验求TOP值

实验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文件夹

bash 复制代码
hadoop fs -mkdir  hdfs://ly1:9000/example

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

bash 复制代码
hadoop fs -put file* hdfs://ly1:9000/example

安装sbt

在/bigdata目录下新建sbt目录

bash 复制代码
mkdir /bigdata/sbt

Download | sbt (scala-sbt.org)

下载sbt-1.9.9.tgz

xftp上传到虚拟机

解压

bash 复制代码
tar -zxvf sbt-1.9.9.tgz -C /bigdata/sbt

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

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

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

bash 复制代码
chmod u+x /usr/local/sbt/sbt

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

bash 复制代码
sbtVersion 

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

创建项目文件夹

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

bash 复制代码
mkdir /bigdata/sparkapp

创建所需的文件夹结构

bash 复制代码
mkdir -p ./sparkapp/src/main/scala

Scala文件

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

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 .**检查项目结构

打包

Scala 复制代码
/bigdata/sbt/sbt package

运行

Scala 复制代码
/bigdata/spark/bin/spark-submit --class "TopN" /bigdata/sparkapp/target/scala-2.12/topn_2.12-1.0.jar
相关推荐
方方洛44 分钟前
ray教程-27-附录F-RayClient与runtime_env与多语言
人工智能·分布式·机器学习
玖米GEO运营王总监1 小时前
2026年账号矩阵协同效应怎么量化:三个指标与公式结构
java·大数据·数据库
飞飞传输14 小时前
飞驰云联文件交换建设方法论:从单点传输到持续治理
大数据·运维·安全
得帆低代码PaaS14 小时前
企业级 Agent 架构:MCP、Integration、数据与治理能力
大数据·人工智能·架构·ai agent·企业数字化·mcp
阿里云大数据AI技术20 小时前
EMR Serverless Ray:让 AI 推理融入数据处理
人工智能·spark
TDengine (老段)20 小时前
TDengine IDMP 十大实用功能(9)
大数据·数据库·人工智能·物联网·时序数据库·tdengine·idmp
播播资源21 小时前
同账户实测 11 个多模态模型:图像 0.03 元起、竖屏视频 8 元一条,最贵和最便宜差 267 倍
大数据·人工智能·深度学习
全栈陈序员1 天前
Git】从入门到精通(八)—— git log:查看提交历史
大数据·git·elasticsearch
演艺大赏1 天前
NiFi 从 3 台扩到 25 台:三轮扩容后我才明白,证书必须全量重签、安装包绝对不能拷
大数据
做科研的周师兄1 天前
【R语言实战】MixSIAR 氢氧同位素水源解析全流程:从混合空间校验到贝叶斯 MCMC 收敛诊断(后附完整代码)
java·大数据·开发语言