当前位置: 首页 > news >正文

基于hive数据库的泰坦尼克号幸存者数据分析

进入

./beeline -u jdbc:hive2://node2:10000 -n root -p

查询

SHOW TABLES;

删除

DROP TABLE IF EXISTS tidanic;

上传数据

hdfs dfs -put train.csv /user/hive/warehouse/mytrain.db/tidanic

《泰坦尼克号幸存者数据分析》

1、原始数据介绍

泰坦尼克号是当时世界上体积最庞大、内部设施最豪华的客运轮船,有“永不沉没”的美誉。然而不幸的是,在它的处女航中,泰坦尼克号便遭厄运——它从英国南安普敦出发驶向美国纽约。

(1)列名介绍

PassengerID->乘客ID
Survived->是否生还
Pclass->船舱级别
Name->姓名
Sex->性别
Age->年龄
SibSp->兄弟姐妹与配偶的总数
Parch->父母和孩子的总数
Ticket->船票ID
Fare->票价
Cabin->舱室
Embarked->出发港口

(2)经过数据清洗后字段之间分隔符为‘\t’, 集合之间分隔符为‘,’ 数据数目:891 条 创建原始表 tidanic

2、 创建数据库并进入数据库

create database if not exists mytrain;use mytrain;

3、创建源表

create table tidanic(
passengerid int,
survived int,
pclass int,
name string,
sex string,
age int,
sibsp int,
parch int,
ticket string,
fare double,
cabin String,
embarked String)row format delimited fields terminated by ',';

在这里插入图片描述

在这里插入图片描述

(1)通过HDFS命令导入数据到指定路径。

hdfs dfs -put train.csv   /user/hive/warehouse/mytrain.db/tidanic

在这里插入图片描述

(2)查看前5行,检查是否导入成功。

select * from tidanic limit 5;

在这里插入图片描述

4、静态分区表

(1)创建静态分区表tidanic_part,字段为passengerid,survived,pclass,name,

分区字段为gender,按照性别字段sex分区。

  create table tidanic_part(passengerid int,survived int,pclass int,name string)partitioned by(gender string)row format delimited fields terminated by ',';

在这里插入图片描述

(2)导入数据到静态分区表tidanic_part

  insert overwrite table tidanic_part partition(gender='female')select passengerid,survived,pclass,name from tidanic where sex='female';insert overwrite table tidanic_part partition(gender='male')select passengerid,survived,pclass,name from tidanic where sex='male';

在这里插入图片描述
在这里插入图片描述

5、动态分区表

(1)创建动态分区表tidanic_dynamic_part,字段为passengerid,survived,name,

分区字段为passengerclass,按照pclass值进行分区。

  create table tidanic_dynamic_part(passengerid int,survived int,name string)partitioned by(passengerclass string)row format delimited fields terminated by ',';

在这里插入图片描述

(2)设置动态分区配置

   set  hive.exec.dynamic.partition=true;set  hive.exec.dynamic.partition.mode=nostrict;

在这里插入图片描述

(3)往动态分区表中插入数据

  insert overwrite table tidanic_dynamic_part partition(passengerclass)select passengerid,survived,name,pclass from tidanic;

在这里插入图片描述

在这里插入图片描述

6、分桶表

(1)创建桶表,按年龄将数据分到4个桶,抽取两个桶的数据创建一个新表tidannic_sample。

  create table tidanic_bucket(passengerid int,name string,age int)clustered by (age) into 4 bucketsrow format delimited fields terminated by ',';

在这里插入图片描述在这里插入图片描述

(2)修改桶表配置

set hive.enforce.bucketing=true;

在这里插入图片描述

(3)往桶表中插入数据

   insert overwrite table tidanic_bucket select passengerid,name,age from tidanic;

在这里插入图片描述

(4)抽取桶1开始两个桶的数据到抽样表tidanic_sample中,

   create table tidanic_sample as select * from tidanic_bucket tablesample(bucket 1 out of 2 on age);

在这里插入图片描述在这里插入图片描述

7、数据导出

将分区标数据导出到文件夹‘/export_dir2’

export table tidanic_dynamic_part to '/user/hive/export_dir2';

在这里插入图片描述在这里插入图片描述

8、外部表

(1)创建外部表,位置位于’/user/hive/warehouse/titanic_external’,字符之间’,'隔开

CREATE EXTERNAL TABLE titanic_external (
passengerid int,
survived int,
pclass int,
name string,
sex string,
age int,
sibsp int,
parch int,
ticket string,
fare double,
cabin String,
embarked String
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/user/hive/warehouse/titanic_external';

在这里插入图片描述

(2)载入数据

LOAD DATA INPATH '/train.csv' INTO TABLE titanic_external;

在这里插入图片描述

(3)查看表的结构

DESCRIBE FORMATTED titanic_external;

在这里插入图片描述

9、DDL操作

①显示表名t的数据表

在这里插入图片描述

②将数据库中titanic_external表的名字改为titanic_ex;

在这里插入图片描述在这里插入图片描述

③删除数据表titanic_ex;

DROP TABLE titanic_ex;

在这里插入图片描述

10、查询插入

所有年龄大于等于 20 岁的乘客数据插入到另一个表 titanic_cc中

INSERT INTO TABLE titanic_cc
SELECT *
FROM titanic_external
WHERE Age >= 20;

在这里插入图片描述
在这里插入图片描述

11、分组过滤排序查询

(1)过滤查询(WHERE):查询所有幸存下来的男性乘客。

SELECT *   FROM tidanic   WHERE sex = 'male' AND survived = 1;

在这里插入图片描述
在这里插入图片描述

(2)分组查询(GROUP BY):按船票等级(pclass)统计乘客数。

SELECT pclass, COUNT(*) AS num_passengers   FROM tidanic   GROUP BY pclass;

在这里插入图片描述

在这里插入图片描述

(3)排序查询(ORDER BY):按船票费用(fare)从高到低排序乘客。

SELECT *   FROM tidanic   ORDER BY fare DESC;

在这里插入图片描述在这里插入图片描述

(4)组合过滤、分组和排序:查询所有幸存下来的女性乘客,并按年龄(age)从低到高排序。

SELECT *   FROM tidanic   WHERE sex = 'female' AND survived = 1   ORDER BY age ASC;

在这里插入图片描述
在这里插入图片描述

(5)内置函数 - 数学函数:计算乘客年龄的标准差。

SELECT STDDEV(Age) AS age_stddev
FROM tidanic;

在这里插入图片描述
在这里插入图片描述

(6)内置函数 - 条件函数: 使用CASE语句将乘客分为成年人和未成年人,并计算各自的数量。

SELECTSUM(CASE WHEN Age >= 18 THEN 1 ELSE 0 END) AS adult_count,SUM(CASE WHEN Age < 18 THEN 1 ELSE 0 END) AS minor_count
FROM tidanic;

在这里插入图片描述在这里插入图片描述

12、抽样查询

从tidanic中随机选择大约10%的行

SELECT *  FROM tidanic  TABLESAMPLE(BUCKET 1 OUT OF 10 ON RAND()) s;

在这里插入图片描述
在这里插入图片描述

13、事务表

开启事务

set hive.support.concurrency = true; 
set hive.enforce.bucketing = true;
set hive.exec.dynamic.partition.mode = nonstrict; 
set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager; 
set hive.compactor.initiator.on = true; 
set hive.compactor.worker.threads = 1; 

在这里插入图片描述

创建表

CREATE TABLE titanic_transactional (  passengerid int,
survived int,
pclass int,
name string,
sex string,
age int,
sibsp int,
parch int,
ticket string,
fare double,
cabin String,
embarked String)  STORED AS ORC  TBLPROPERTIES ('transactional'='true');

在这里插入图片描述

从原表把数据插入事务表

INSERT INTO TABLE titanic_transactional  SELECT * FROM  tidanic;

在这里插入图片描述在这里插入图片描述

更新所有年龄大于60的乘客的survived字段为0(表示未幸存)

UPDATE titanic_transactional   SET survived = 0   WHERE age > 60;

在这里插入图片描述

SELECT * FROM titanic_transactional WHERE age < 20;

在这里插入图片描述

删除所有年龄小于20的乘客记录

DELETE FROM titanic_transactional WHERE age < 20;

在这里插入图片描述

SELECT * FROM titanic_transactional WHERE age < 20;

在这里插入图片描述

分析与总结:

使用python把筛选出的数据进行数据分析可得到如下
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 女性幸存率约为75%,远高于男性的20%左右。这表明在紧急情况下,女性更容易得到救援。
  • 头等舱乘客的幸存率最高,达到了63%,而三等舱乘客的幸存率最低,仅为24%。这表明社会地位和经济条件对幸存率有显著影响。
  • 在各个船舱等级中,女性的幸存率均高于男性。然而,头等舱男性的幸存率仍然高于三等舱女性的幸存率,这进一步强调了社会地位对幸存率的重要性。
  • 与家人同行的乘客往往更容易幸存,因为他们可以相互帮助和照顾。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • starRocks搭建
  • 14、Python之super star:一颗星、两颗星,满天都是小星星
  • Rust 版本升级:rustup update stable 报错
  • 2300. 咒语和药水的成功对数
  • BUUCTF逆向wp [MRCTF2020]Transform
  • 【Linux】多线程_7
  • Spring解决循环依赖:三级缓存
  • 17-3 向量数据库之野望3 - SingleStoreDB 实践教程
  • MongoDB教程(六):mongoDB复制副本集
  • ant design form动态增减表单项Form.List如何进行动态校验规则
  • AI安全系列——[第五空间 2022]AI(持续更新)
  • 使用 Apache Pulsar 构建弹性可扩展的事件驱动应用
  • 【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十)-服务体验保证的用例
  • 用虚拟机,可以在x86的电脑上虚拟出arm的电脑吗
  • 【轻松拿捏】Java-final关键字(面试)
  • 5、React组件事件详解
  • Angular6错误 Service: No provider for Renderer2
  • conda常用的命令
  • create-react-app项目添加less配置
  • ES6简单总结(搭配简单的讲解和小案例)
  • Java Agent 学习笔记
  • Java IO学习笔记一
  • JAVA多线程机制解析-volatilesynchronized
  • Mysql数据库的条件查询语句
  • Theano - 导数
  • Twitter赢在开放,三年创造奇迹
  • Vue全家桶实现一个Web App
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 今年的LC3大会没了?
  • 聊聊hikari连接池的leakDetectionThreshold
  • 爬虫模拟登陆 SegmentFault
  • 前端技术周刊 2019-02-11 Serverless
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 深度解析利用ES6进行Promise封装总结
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 移动端唤起键盘时取消position:fixed定位
  • 用jquery写贪吃蛇
  • ionic入门之数据绑定显示-1
  • 说说我为什么看好Spring Cloud Alibaba
  • ​Java基础复习笔记 第16章:网络编程
  • ​MySQL主从复制一致性检测
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #Z0458. 树的中心2
  • #宝哥教你#查看jquery绑定的事件函数
  • (pytorch进阶之路)扩散概率模型
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (差分)胡桃爱原石
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景