spark集群环境下,实现人口平均年龄计算

news2024/10/6 20:28:57

文章目录

    • 任务目标
    • 0. 版本信息
    • 1. 计算生成renkou.txt
    • 2. 文件上传至spark
    • 3. 上传文件时,可能出现的常见错误
    • 4. 编写spark文件
    • 5. 上传集群
    • 6. 集群环境下提交任务

任务目标

在虚拟机上部署spark集群,给定renkou.txt文件,输出平均年龄

renkou.txt:
在这里插入图片描述

集群运作spark
在这里插入图片描述

spark web界面显示结果
在这里插入图片描述

0. 版本信息

信息版本
Scala2.11.8
Java1.8
spark2.2.0

hadoop安装
尚硅谷Hadoop

spark
spark集群搭建

tip: 按照上述spark博客集群搭建时,node1是虚拟机的域名,记得换成自己虚拟机的域名。如果没有,填写真实ip地址即可

maven坐标

        <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core -->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>2.2.0</version>
        </dependency>

1. 计算生成renkou.txt

因为数据量很庞大, 1000万行,因此采用Java多线程的方式生成数据

package com.xhf.java;

import com.xhf.java.entity.Person;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;

/**
 * 生成renkou.txt
 */
public class RenkouGen {
    static Random random = new Random();

    static Object lock = new Object();

    public static void main(String[] args) throws Exception {
        // 创建文件
        File file = new File("E:\\B站视频创作\\Java计算人口平均_spark\\src\\main\\resources\\renkou.txt");
        // 判断file是否存在
        if (file.exists()) {
            file.delete();
        }else {
            file.createNewFile();
        }
        // 创建流管到
        BufferedWriter bw = new BufferedWriter(new FileWriter(file, false));

        // 创建线程池 1000万, 100万(每个线程)
        ExecutorService executorService = Executors.newFixedThreadPool(10);
        for (int i = 0; i < 10; i++) {
            // 生成数据
            executorService.execute(() -> {
                // 100万
                for (int j = 0; j < 1000000; j++) {
                    Person person = new Person(j, random.nextInt(20) + 40);
                    // 数据写入文件
                    try {
//                        synchronized (lock) {
                            // 加锁
                            bw.write(person.toString());
//                            bw.newLine();
//                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        // 关闭线程池
        executorService.shutdown();
        executorService.awaitTermination(10000L, TimeUnit.SECONDS);

        bw.close();
    }
}

tip:

  • 生成完的文件需要上传到hadoop文件系统中,这样便于spark程序部署时获取文件信息
  • 如果不上传至hadoop中,在集群环境下运行时,可以通过main的args参数指定路径,又或者将文件存放在resouce目录下,打jar包后,代码通过resource资源目录进行定位

2. 文件上传至spark

如果遇到问题,请往下看 3.上传文件时,可能出现的常见错误
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件访问url: ‘hdfs://hadoop102:8020/spark/renkou.txt’

3. 上传文件时,可能出现的常见错误

在上传的过程中,可能会遇到各种报错,我这里整理好参考资料

  • 解决hadoop Permission denied: user=dr.who, access=WRITE, inode=“/“:kfk:supergroup:drwxr-xr-x问题
  • Name node is in safe mode

4. 编写spark文件

package com.xhf.spark

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object RenkouCal2_Cluster {
  def main(args: Array[String]): Unit = {
    // 设置配置, master记得输入你要提交的主节点地址,而不是local. 如果是local, 我的版本下能够运行, 但任务无法在UI界面上显示
    val conf: SparkConf = new SparkConf().setAppName("renkou").setMaster("spark://hadoop102:7077")
    // 连接spark
    val sparkContext = new SparkContext(conf)
    val filePath: String = "hdfs://hadoop102:8020/spark/renkou.txt";
    // 读取文件 List<String>
    val lines: RDD[String] = sparkContext.textFile(filePath)
    val begin: Long = System.currentTimeMillis()
    val value: RDD[Long] = lines.map(line => {
      // String : "1 27"
      line.split(" ")(1).toLong
    });
    // 计算 (把所有年龄累加 -> 除以个数 -> 平均年龄)
    val sum: Long = value.reduce((x, y) => x + y)
    println(sum / (1.0 * lines.count()))
    println(System.currentTimeMillis() - begin)
    // 终止spark
    sparkContext.stop()
  }
}

如果本地能够运行,通过maven打成jar包,上传运行
在这里插入图片描述

5. 上传集群

笔者采用xshell + xftp的方式进行jar包上传,上传至如下位置
在这里插入图片描述

6. 集群环境下提交任务

找到spark安装位置,进入bin目录
在这里插入图片描述
执行如下指令

./spark-submit \
--class com.xhf.spark.RenkouCal2 \
--master spark://hadoop102:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
/export/servers/spark_demo/java_spark-1.0-SNAPSHOT.jar
  • –class 指定运行jar包具体的启动类,笔者运行的时RenkouCal2这个类
  • –master 指定master节点的地址
  • /export/servers/spark_demo/java_spark-1.0-SNAPSHOT.jar 指定jar包路径,这个由自己决定
    其它参数见名知意,不在过多赘述

spark,启动!
在这里插入图片描述

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

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

相关文章

淘宝天猫商品评论数据接口,淘宝天猫商品评论API接口,淘宝API

淘宝商品评论数据接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL&#xff0c;可以向淘宝服务器发起HTTP请求&#xff0c;获取商品评论数据。接口返回的数据一般为JSON格式&#xff0c;包含了商品的各种评价信息。获取到商品评论数据后&#xff0c;可以对其进行处理…

京东商品评论数据接口,京东API接口

京东商品评论内容数据接口步骤如下&#xff1a; 访问京东开放平台并注册一个开发者账号。创建一个应用并获取到API的权限。在开发者的控制台中找到API的使用文档。在文档中找到获取商品评论的API接口&#xff0c;点击获取key和secret。构造请求URL&#xff0c;请求URL的路径为…

SAP-MM/QM 移动原因维护

业务场景&#xff1a; 质检反馈现有的几种退货原因不能满足业务需求&#xff0c;需要增加&#xff0c;那么启用质检的退货原因和未启用质检的退货原因分别在哪里维护呢&#xff1f; 经过查找&#xff0c;退货原因不是按模块区分的&#xff0c;而是按移动类型确定的&#xff0c…

CRM系统:客户培育提高业绩的方法

多数情况下客户线索不会在首次沟通后就表现出强烈购买的意愿&#xff0c;这期间需要经过不断地沟通和培育才能进入到产品购买阶段。CRM客户管理系统帮助销售挖掘价值客户、高效跟进客户直至成交。下面说说&#xff0c;CRM系统如何客户培育提高业绩。 一、筛选潜在客户 企业客…

xcode打包macos报错:FlutterInputs.xcfilelist 和 FlutterOutputs.xcfilelist

xcode 打包macos的时候&#xff0c;报错如下&#xff1a; Unable to load contents of the file list: ‘macos/ephemeral/FlutterInputs.xcfilelist’ ‘macos/ephemeral/FlutterOutputs.xcfilelist’ 解决方案&#xff1a; 我的项目macos下没有找到FlutterInputs.xcfilelis…

[计算机入门] 应用软件介绍(娱乐类)

3.21 应用软件介绍(娱乐类) 3.21.1 音乐&#xff1a;酷狗 音乐软件是一类可以帮助人们播放、管理和发现音乐的应用程序。它们提供了丰富的音乐内容&#xff0c;用户可以通过搜索、分类浏览或个性化推荐等方式找到自己喜欢的歌曲、专辑或艺术家。音乐软件还通常支持创建和管理…

【LeetCode高频SQL50题-基础版】打卡第4天:第21~25题

文章目录 【LeetCode高频SQL50题-基础版】打卡第四天&#xff1a;第21~25题⛅前言即时食物配送II&#x1f512;题目&#x1f511;题解 游戏玩法分析IV&#x1f512;题目&#x1f511;题解 每位教师所教授的科目种类的数量&#x1f512;题目&#x1f511;题解 查询近30天活跃用户…

Adobe发布Firefly 2,提升图像质量和用户体验

&#x1f989; AI新闻 &#x1f680; Adobe发布Firefly 2&#xff0c;提升图像质量和用户体验 摘要&#xff1a;Adobe升级了其AIGC生图平台Firefly为Firefly 2&#xff0c;该版本通过引入矢量图生成功能、提升图像质量和增加多项新功能&#xff0c;大幅改善了用户体验。Firef…

用3-8译码器实现全减器

描述 请使用3-8译码器和必要的逻辑门实现全减器&#xff0c;全减器接口图如下&#xff0c;A是被减数&#xff0c;B是减数&#xff0c;Ci是来自低位的借位&#xff0c;D是差&#xff0c;Co是向高位的借位。 3-8译码器代码如下&#xff0c;可将参考代码添加并例化到本题答案中。 …

Spring 1.依赖 2.xml 3.对象 4.测试

配置模型 依赖注入 很简单 框架很简单 依赖 xml 对象 测试 依赖 写在pom mvn网址找spring 2.写类 就是对象 测试 我们获取对象&#xff08;spring创建&#xff09; 才能用 配置文件 官网找 下拉 粘贴标红 点击它告诉系统是一个 然后第二次就点加入不是新创建

虹科干货 | 虹科带你了解车载以太网-SOME/IP协议

在标准的网络七层架构中&#xff0c;SOME/IP&#xff08;Scalable service-Oriented Middleware over IP) 作为应用层协议运行于车载以太网四层以上&#xff0c;作为以太网通信中间件来实现应用层和IP层的数据交互&#xff0c;使其不依赖于操作系统&#xff0c;又能兼容AUTOSAR…

如何通过Express和React处理SSE

本文作者为360奇舞团前端开发工程师 最近AIGC技术的大热&#xff0c;市面上也出现了许多类似生产的AI工具&#xff0c;其中有一大特色就是对话的输出结果是类似真人的打字效果出现&#xff0c;要呈现出这种效果&#xff0c;最主要的就是要利用SSE技术&#xff08;Server-Sent E…

【新书推荐】AI时代,当程序员遇到ChatGPT,开发效率飞起来!

文章目录 ChatGPT为开发提速一、ChatGPT自动生成代码二、优化代码结构三、自动化测试四、智能推荐五、ChatGPT在开发中的实际应用六、总结 新书推荐《AI时代程序员开发之道&#xff1a;ChatGPT让程序员插上翅膀》内容简介作家简介目录获取方式 ChatGPT为开发提速 人工智能是当…

STM32物联网基于ZigBee智能家居控制系统

实践制作DIY- GC0169-ZigBee智能家居 一、功能说明&#xff1a; 基于STM32单片机设计-ZigBee智能家居 二、功能介绍&#xff1a; 1个主机显示板&#xff1a;STM32F103C最小系统ZigBee无线模块OLED显示器 语音识别模块多个按键ESP8266-WIFI模块&#xff08;仅WIFI版本有&…

c++数据处理----图像修补:cv::inpaint()

图像修补:cv::inpaint() cv::inpaint() 是OpenCV中的一个函数&#xff0c;用于图像修补&#xff08;image inpainting&#xff09;。图像修补是一种图像处理技术&#xff0c;用于去除图像中的损坏或不需要的区域&#xff0c;然后用周围的信息填充这些区域&#xff0c;使图像看…

苹果安卓网页的H5封装成App的应用和原生开发的应用有什么不一样?

老哥在么&#xff1f;H5封装的app和原生开发的app有什么不一样&#xff1f;&#xff0c;不懂就要问&#xff0c;我能理解哈&#xff0c;虽然这个问题有点小白&#xff0c;但是我还是得认真回答&#xff0c;以防止我回答的不是很好&#xff0c;所以我科技了一下&#xff0c;所以…

1688商品评论数据接口,1688商品评论API接口

1688商品评论内容数据接口步骤如下&#xff1a; 通过1688开放平台接口获取商品评论内容数据&#xff1a;首先&#xff0c;您需要在开放平台注册成为开发者并创建一个应用&#xff0c;获取到所需的App Key和App Secret等信息。使用获取到的App Key和App Secret&#xff0c;进行…

智能防眩目前照灯系统控制器ADB

经纬恒润的自适应远光系统—— ADB&#xff08;Adaptive Driving Beam&#xff09; 是一种能够根据路况自适应变换远光光型的智能远光控制系统。根据本车行驶状态、环境状态以及道路车辆状态&#xff0c;ADB 系统自动为驾驶员开启或退出远光。同时&#xff0c;根据车辆前方视野…

深入了解进程:计算机中的任务管理与隔离

什么是进程&#xff1f; 进程是一个独立的执行环境&#xff0c;包括自己的内存空间、程序计数器、文件句柄等。每个进程都是操作系统的一个独立实例&#xff0c;它们之间通常相互隔离。 通俗来说&#xff0c;进程就是程序的一次执行过程&#xff0c;程序是静态的&#xff0c;它…

4Spring及Spring系列-基本

8、Spring/Spring MVC Spring常见面试题55道&#xff08;附答案2023最新版&#xff09;_spring面试题-CSDN博客Spring是一个开源的Java企业级开发框架&#xff0c;由Rod Johnson于2003年创建。它提供了一套全面的编程和配置模型&#xff0c;用于构建现代化的基于Java的企业应用…