世界新冠疫情数countrydata.csv 表,实战分析

news2024/12/24 2:39:58

一、环境要求

Hadoop + hive + spark + hbase开发环境

开启hadoop:
    start-all.sh
 
开启zookeeper:
    zkServer.sh start
 
开启hive:
    nohup hive --service metastore &
    nohup hive --service hiveserver2 &
打开hive界面:
    beeline -u jdbc:hive2://192.168.153.139:10000
 
开启hbase:
    start-hbase.sh
打开hbase界面:
    hbase shell

二、数据描述

        countrydata.csv 是世界新冠疫情数,数据中记录了从疫情开始至 7 2 日,以国家为单
位的每日新冠疫情感染人数的数据统计。字段说明如下。

 ex_exam_record表结构如下:

 三、功能要求

1、数据准备

yqRDD
    .map(x=>("allWorld",x._2.toInt))
    .reduceByKey(_+_)
    .collect.foreach(println)

        在HDFS中创建目录/app/data/exam,并将 countrydata.csv文件传到该目录。

[root@hadoop02 testdata]# hdfs dfs -put /opt/testdata/countrydata.csv /app/data/exam

2、在spark-shell中,加载HDFS文件系统countrydata.csv文件,并使用RDD完成以下统计计算。

        ①统计每个国家在数据截止统计时的累计确诊人数。

val fileRDD = sc.textFile("/app/data/exam/countrydata.csv")


val yqRDD = fileRDD
    .map(x=>x.split(","))
    .map(x=>(x(4),x(1)))
    .groupByKey()
    .map(x=>(x._1,x._2.toList.max))
    .collect.foreach(println)

         ②统计全世界在数据截止统计时的总感染人数。

        需要注意的是,这里的累计确诊人数、当日新增人数这两列的数据不一定对的上。比如存在治愈人数,会在累积确认人数里面减掉。

fileRDD
    .map(x=>x.split(","))
    .map(x=>(x(4),x(1).toInt))
    .groupByKey()
    .map(x => (x._1, x._2.toList.max))
    .map(x => ("all world", x._2))
    .reduceByKey(_+_)
    .foreach(println)

        ③统计每个大洲中每日新增确诊人数最多的国家及确诊人数,并输出 20200408 这一天各大洲当日新增确诊人数最多的国家及确诊人数。

fileRDD
    .map(x=>x.split(","))
    .map(x=>((x(6),x(3)),(x(2),x(4))))
    .reduceByKey((x,y)=>if(x._1>y._1) x else y)
    .foreach(println)

fileRDD
    .map(x=>x.split(","))
    .map(x=>((x(6),x(3)),(x(2).toInt,x(4))))
    .reduceByKey((x,y)=>if(x._1>y._1) x else y)
    .filter(x=>x._1._2=="20200408")
    .foreach(println)

        ④统计每个大洲中每日累计确诊人数最多的国家及确诊人数,并输出 20200607 这一天各大洲当日累计确诊人数最多的国家及确诊人数。

fileRDD
    .map(x=>x.split(","))
    .map(x=>((x(6),x(3)),(x(2).toInt,x(4))))
    .reduceByKey((x,y)=>if(x._1>y._1) x else y)
    .filter(x=>x._1._2=="20200607")
    .foreach(println)

        ⑤ 统计每个大洲每月累计确诊人数,显示 202006 这个月每个大洲的累计确诊人数。  

fileRDD
    .map(x=>x.split(","))
    .map(x=>((x(6),x(3).substring(0,6)),x(2).toInt))
    .filter(x=>x._1._2=="202006")
    .reduceByKey(_+_)
    .foreach(println)

3、创建hbase数据表

        在 HBase 中创建命名空间( namespace exam ,在该命名空间下创建 covid19_world 表, 使用大洲和统计日期的组合作为 RowKey (如“亚洲 20200520 ”),该表下有 1 个列族 record。
        record 列族用于统计疫情数据(每个大洲当日新增确诊人数最多的国家record : maxIncreaseCountry及其新增确诊人数 record : maxIncreaseCount )。
hbase(main):004:0> create "exam:covid19_world","record"

4、请在 Hive 中创建数据库 exam

        在该数据库中创建外部表 ex_exam_record 指向 /app/data/exam 下的疫情数据。

 

use exam;
create external table ex_exam_record(
    id string,
    confirmedCount int,
    confirmedIncr int,
    recordDate string,
    countryName string,
    countryShortCode string,
    continent string
)
row format delimited fields terminated by ","
stored as textfile location "/app/data/exam"

         创建外部表 ex_exam_covid19_record 映射至 HBase 中的 exam:covid19_world 表的 record 列族。

ex_exam_covid19_record 表结构如下:

create external table ex_exam_covid19_record(
    key string,
    maxIncreaseCountry string,
    maxIncreaseCount int
)
stored by "org.apache.hadoop.hive.hbase.HBaseStorageHandler" with
serdeproperties ("hbase.columns.mapping"=":key,record:maxIncreaseCountry,record:maxIncreaseCount")
tblproperties ("hbase.table.name"="exam:covid19_world")

5、使用ex_exam_record表中的数据

        ① 统计每个大洲中每日新增确诊人数最多的国家,将 continent recordDate 合并成
rowkey ,并保存到 ex_exam_covid19_record 表中。
insert into ex_spu_hbase(
    select concat(continent,'-',recordDate) as rowkey,countryName,confirmedIncr from(
select recordDate,continent,countryName ,confirmedIncr,row_number() over (partition by recordDate order by confirmedIncr desc) as rk from ex_exam_record
 ) t where t.rk=='1')
        ② 完成统计后,在 HBase Shell 中遍历 exam:covid19_world 表中的前 20 条数据。

 

hbase(main):006:0> scan 'exam:covid19_world'

 

 

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

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

相关文章

单列集合之Set集合以及各种实现类

Set集合 Set接口也是Collection单列结合的一个子接口,set集合中没有提供其他额外的方法,但是相比较Collection集合新增了其他的特性。所有实现了Set接口的类都可以叫做Set集合。 Coliection接口中的方法:Collection集合的方法 Set集合不允…

更全面的对比GPT4和Claude对MLIR的掌握能力

本文构造了20个MLIR基础概念的问题以及使用OneFlow IR转换为Tosa IR的5个代码段来评测GPT4和Claude对于MLIR的掌握能力,我的结论是对于基础概念的理解Claude整体上和GPT4持平,而在阅读相关代码片段时Claude表现出了比GPT4更强一点的理解能力。 0x0. 前言…

【Python】读取r语言数据+NMF算法(完整代码+详细注释)

目录 依赖库代码功能完整代码总结 欢迎关注 『Python』 系列,持续更新中 欢迎关注 『Python』 系列,持续更新中 算法部分源码是我的数模兄弟想要深入研究nmf算法方面的内容发给我让我跑的 参考自博文 https://blog.csdn.net/atease0001/article/details/…

计及光伏电站快速无功响应特性的分布式电源优化配置方法(Matlab代码实现)

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥 🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 …

JS的函数定义和参数

文章目录 一、JavaScript 函数定义二、JavaScript 函数参数总结 一、JavaScript 函数定义 JavaScript 使用关键字 function 定义函数。 函数可以通过声明定义,也可以是一个表达式。 函数声明 function functionName(parameters) {执行的代码 }函数声明后不会立即…

【C++内联函数】

目录 前言内联函数的概念内联函数的特性内联函数的总结 前言 假设有这样的一个场景,有一个代码量不足三行的函数被调用了一万次,现在让你做优化,你会怎么考虑优化? 我们都知道函数调用是有时间和空间开销的。程序在执行一个函数之…

Ansys Lumerical | 使用 STACK 仿真抗反射偏振器件

1、说明 在本示例中,我们将展示使用 Lumerical STACK 求解器来设计抗反射圆偏振器,以减少 OLED 显示器的环境光反射。 2、综述 OLED 显示器的底部金属电极可以用于增强光提取效率,然而它也会带来环境光反射的不利影响,导致显示器在…

深度学习-基础(二)-numpy中的轴操作

背景 使用Pytorch进行学习,少不了跟numpy打交道,比如数据集中去除通道reduction只有做加法运算等,但是numpy轴操作,很少有人讲清楚,此处加以梳理。 轴的概念 轴用来为超过一维的数组定义的属性,二维数据…

【Atlas500】华为500小站预配置

目录 基础配置解决配置能力项未开启问题 基础配置 1.网线连接盒子 2.1口IP:192.168.2.111 2口IP:192.168.3.111 3.登临网页https://192.168.2.111 输入用户名和密码(管理端用户)。 ● 默认用户名:admin ● 默认密码:H…

Eclipse安装插件及所有插件下载地址汇总

Eclipse安装插件及所有插件下载地址汇总 插件的意义安装插件各插件下载地址汇总kepler(Eclipse配置本地安装好的Tomcat时使用的插件)另一个插件名称 插件的意义 自认是为了解耦,使使用eclipse的人可以依据自己所需,有针对性的下载…

MySQL_第04章_运算符

第04章_运算符 讲师:尚硅谷 - 宋红康(江湖人称:康师傅) 官网: http://www.atguigu.com 1. 算术运算符 算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式…

Node第三方包 【mysql2】

文章目录 🌟前言🌟访问数据库🌟MySQL驱动🌟mysql2🌟安装 🌟方法🌟连接数据库🌟通过 query() 方法执行SQL语句🌟通过 execute() 方法执行SQL语句 🌟使用连接池…

研报精选230419

目录 【行业230419东吴证券】AACR2023本土药企临床进展:“秒懂”全球创新药系列研究之会议追踪 【行业230419浙商证券】大制造行业估值手册:周度数据跟踪 【行业230419东方财富证券】2023上海车展前瞻:自主争先,迎接智能电动新时代…

#Chrome扩展程序开发教程--03:Manifest

#Chrome扩展程序开发教程--03:Manifest 引言1、基本介绍2、必须属性3、重要属性3.1、permissions、host_permissions、optional_permissions、optional_host_permissions3.2、background3.3、content_scripts3.4、action3.5、options_page3.6、options_ui3.7、icons…

C++ Linux Web Server 面试基础篇-操作系统(四、线程通信)

⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您,麻烦点个赞👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三…

TiDB实战篇-Data Migration (DM) 同步数据

目录 简介 原理 任务管理 ​编辑同步拓扑示例 使用场景 限制 硬件配置 安装&升级 部署 生成配置文件 生成配置文件模板 更具自身的机器修改 部署 启动集群&查看集群 实战 上游数据库前提 配置mysql的相关配置 编写DM的MySQL相关配置 把MySQL和DM …

【JavaEE】Bean的作用域和生命周期

目录 Bean的作用域 作用域分类 设置作用域 通过注解设置 通过配置文件设置 Bean的生命周期 Bean的作用域 Bean的作用域是指:在整个Spring容器中Bean的行为模式。这个模式有六种。 作用域分类 singleton:单例作用域。 在这个模式下,容器…

网络地址转换应用

如图所示,企业使用一台AR 路由器作为出口设备,路由器配置NAT Outbound为私网用户提供访问Internet服务,同时配置NAT Server将私网WEB服务器发布到公网上,对外网用户提供服务。运营商仅为该单位分配了一个公网IP,此地址既作为AR出接口的IP地址,也作为NAT Outbound和NAT Se…

【Atlas500】华为Atals MindStudio配置指南

目录 安装推理用ubuntu版docker配置docker内的ssh服务安装ubuntu系统中的依赖项:检查root用户的umask安装依赖项安装CANN连接到CANN Setting 安装推理用ubuntu版docker 华为的atlas500自带的欧拉系统是一个裁剪系统,一般通过在其上运行官方的ubuntu dock…

【消息队列】Kafka高水位和Leader Epoch原理

什么是高水位 首先高水位也就是HW,而对应的有LEO,其实这都是Kafka副本中针对位移的概念,其目的就是为了保证多副本间数据的一致性。 LEO (Log End Offet):每个副本的最后一个offset,LEO其实就是…