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

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

 

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

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

相关文章

K8S 哲学 - deployment -- kubectl【create 、 rollout 、edit、scale、set】

kubectl create kubectl rollout kubectl edit kubectl set kubectl scale 1、创建与配置文件解析 2、deploy 滚动更新 :template 里面的内容改变触发滚动更新 编辑该 deploy 的 配置文件 ,加入一个 label 不会触发滚动更新 改变 nginx镜…

HTML批量文件上传方案——图像预览方式

作者:私语茶馆 1.HTML多文件上传的关键方案 多文件上传包括:文件有效性校验,文件预览、存储和进度展示多个方面,本章节介绍的是文件预览的实现方案。 2.文件上传前预览 2.1.效果 选择文件前: 选择文件后: 2.2.CSS文件代码 StorageCenter.css代码 html {font-family:…

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

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

郡望是一个什么性质的概念

顾名思义,郡望就是某郡中的望族。 别看现在听起来没什么感觉,在古代却是一个沉甸甸的庞然大物,是标志贵贱的,决定了个人,家庭和家族的未来。 自秦朝实行郡县制,直到唐朝废郡,郡做为一级或州管的…

【AIGC调研系列】LLaVA++整合Phi-3和Llama-3能够实现什么

LLaVA能够为Phi-3和Llama-3带来的主要好处包括: 视觉处理能力的增强:通过整合Phi-3和Llama-3模型,创建了具备视觉处理能力的Phi-3-V和Llama-3-V版本,这意味着这些模型现在能够理解和生成与图像相关的内容[1]。这种能力的增加&…

浅论汽车研发项目数字化管理之道

随着汽车行业竞争不断加剧,汽车厂商能否快速、高质地推出贴合市场需求的新车型已经成为车企竞争的重要手段,而汽车研发具备流程复杂、专业领域多、协作难度大、质量要求高等特点,企业如果缺少科学健全的项目管理体系,将会在汽车研…

如何查看我的Docker 容器和 `app.py` 脚本有足够的权限来读取 `config.json` 文件

要检查 Docker 容器和 app.py 脚本是否具有读取 config.json 文件的足够权限,你可以按照以下步骤操作: 检查宿主机上的文件权限: 在宿主机上,使用 ls -l 命令查看 config.json 文件的权限。 ls -l /path/to/config.json确保该文件…

从车规传感器发展的正反面,看智驾发展的“胜负手”

北京车展进程过半,雷军和周鸿祎成为车展新晋“网红”的同时,智能驾驶成为观众讨论最务实的话题之一。端到端自动驾驶、城市NOA这些炙手可热的话题,占据了大部分的关注度。 但在高阶智能驾驶之外,智能驾驶同样具有频繁使用需求的低…

实验案例一:在一台交换机上配置 VLAN

1.实验环境 实验拓扑图结构如图12.12所示,其中PC1和PC3属于VLAN 2,PC2属于VLAN 3,PC1的IP 地址为192.168.0.2/24,PC2的P 地址为 192.168.1.2/24,PC3的P地址为192.168.0.3/24 2.需求描述 要求处于相同VLAN中的主机能够…

CSS的布局模式

前言&#xff1a; 我们可以看到京东的官网上的一些例子&#xff08;如下图&#xff09;&#xff0c;在同一排中能够存在多个div&#xff0c;这是通过布局方式&#xff08;例如浮动&#xff09;来实现的。 CSS传统的布局模式&#xff1a; <1>普通流&#xff08;又称之为标…

Codeforces Round 928 (Div. 4) F. Vlad and Avoiding X

Vlad and Avoiding X 题目描述 弗拉迪斯拉夫有一个大小为 7 7 7 \times 7 77 的网格&#xff0c;其中每个单元格的颜色都是黑色或白色。在一次操作中&#xff0c;他可以选择任意一个单元格并改变其颜色&#xff08;黑色 ↔ \leftrightarrow ↔ 白色&#xff09;。 请找出…

39.WEB渗透测试-信息收集-域名、指纹收集(1)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;38.WEB渗透测试-信息收集-信息收集-企业信息收集&#xff08;5&#xff09; 子域名信息收…

公文写作笔记

标题 最后一行的日期&#xff0c;后边占4个格子。两个数字占一格。落款单位在日期的正上方。 格式积累 内容&#xff1a; ①开头&#xff1a;缘由 ②主题&#xff1a;对策&#xff08;别人做得好&#xff0c;就借鉴&#xff09; ③结尾&#xff1a;简单的总结&#xff08;字…

LeetCode - 611.有效三角形个数

题目链接 LeetCode - 611. 有效三角形的个数 动画解释 代码解释 class Solution { public:int triangleNumber(vector<int>& nums) {sort(nums.begin(),nums.end());int cout 0;int fix nums.size()-1;while(fix>1){int left 0;int right fix-1;while(left &l…

rust将json字符串直接转为map对象或者hashmap对象

有些时候我们还真的不清楚返回的json数据里面到底有哪些数据&#xff0c;数据类型是什么等&#xff0c;这个时候就可以使用批处理的方式将json字符串转为一个对象&#xff0c;然后通过这个对象的get方法来获取json里面的数据。 pub async fn test_json(&self) {let json_st…

通过AI助手实现一个nas定时任务更新阿里云域名解析

一.通过AI助手实现一个ip-domain.py的脚本 起一个Python脚本&#xff0c;ip-domain.py&#xff1b;注意已安装Python3.的运行环境&#xff1b;将下面阿里云相关配置添加&#xff0c;注意这里引用了两个包&#xff0c;requests和alibabacloud_alidns20150109&#xff1b;执行前…

如何设计一套轻量级的批处理技术?

对于任何应用程序而言&#xff0c;可以说批处理都是一种基础设施类的技术组件。批处理技术应用非常广泛&#xff0c;数据报表、统计分析、定时任务等场景实际上都可以应用批处理技术。如何在不需要人工参与的情况下进行离线、自动、高效地进行复杂数据分析是批处理程序需要考虑…

如何消除SmartScreen“未知发布者”警告?

在互联网高速发展、应用程序遍地开花的当今时代&#xff0c;作为企业&#xff0c;我们通常会开发自己的应用程序来开展自己的业务&#xff0c;以便与客户建立更深入的联系。不少应用程序所有者可能会面临一个难题&#xff0c;那就是用户下载时&#xff0c;系统会弹出SmartScree…

可以在手机端运行的大模型标杆:微软发布第三代Phi-3系列模型,评测结果超过同等参数规模水平,包含三个版本,最小38亿,最高140亿参数

本文原文来自DataLearnerAI官方网站&#xff1a; 可以在手机端运行的大模型标杆&#xff1a;微软发布第三代Phi-3系列模型&#xff0c;评测结果超过同等参数规模水平&#xff0c;包含三个版本&#xff0c;最小38亿&#xff0c;最高140亿参数 | 数据学习者官方网站(Datalearner…

Docker-harbor——私有仓库部署与管理

目录 一、搭建本地私有仓库 1.下载Registry镜像 2.添加本地私有仓库配置 3.重启服务并运行Registry容器 4.容器的操作 4.1拉取Nginx镜像并为镜像打标签 4.2上传到私有仓库 4.3列出私有仓库所有镜像 4.4列出私有仓库的镜像的所有标签 5.先删除原有镜像再拉取私有仓库镜…