基于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%。这表明社会地位和经济条件对幸存率有显著影响。
- 在各个船舱等级中,女性的幸存率均高于男性。然而,头等舱男性的幸存率仍然高于三等舱女性的幸存率,这进一步强调了社会地位对幸存率的重要性。
- 与家人同行的乘客往往更容易幸存,因为他们可以相互帮助和照顾。
相关文章:
基于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、原始数据介绍 泰坦尼克号是当时世界上…...
excel根据数据批量创建并重命名工作表
需求 根据一列数据,批量创建并重命名工作表 做法 1. 右键该sheet,选择查看代码 2. 输入VBA代码 正向创建 Sub create_sheets_by_col()Dim num% 定义为integer*num Application.WorksheetFunction.CountA(Sheet1.Range("A:A")) num是非空…...
智能合约和分布式应用管理系统:技术革新与未来展望
引言 随着区块链技术的不断发展,智能合约和分布式应用(DApps)逐渐成为数字经济中的重要组成部分。智能合约是一种自执行的协议,能够在预设条件满足时自动执行代码,而无需人工干预或中介机构。这种自动化和信任机制极大…...
Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”
1. Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置” 文章目录 1. Spring MVC 中的拦截器的使用“拦截器基本配置” 和 “拦截器高级配置”2. 拦截器3. Spring MVC 中的拦截器的创建和基本配置3.1 定义拦截3.2 拦截器基本配置3.3 拦截器的高级配置 4. Spr…...
MyBatis框架学习笔记(四):动态SQL语句、映射关系和缓存
1 动态 SQL 语句-更复杂的查询业务需求 1.1 动态 SQL-官方文档 (1)文档地址: mybatis – MyBatis 3 | 动态 SQL (2)为什么需要动态 SQL 动态 SQL 是 MyBatis 的强大特性之一 使用 JDBC 或其它类似的框架,根据不同条…...
【C++PythonJava】字符处理详细解读_字符_ASCLL码_字母数字转换_算法竞赛_开发语言
文章目录 Beginning1)ASCLL 码2)大小比较2)判断数字字符3)字符、数字间的相互转换End Beginning 在 C 中,字符和整数有着密不可分的关系。原因就是在计算机中,字符是以一种较 ASCLL 码的整数存储的。自然&…...
人像视频淡入淡出效果的灵敏检验方法
在视频中经常会有淡入淡出的效果,这可能导致人脸检测在实际人已经离开画面之后仍然触发,特别是在使用基于像素强度变化的检测算法时。为了更精确地裁剪视频,你可以尝试以下几种方法: 使用更复杂的人脸检测模型: 有些…...
Unity UGUI Image Maskable
在Unity的UGUI系统中,Maskable属性用于控制UI元素是否受到父级遮罩组件的影响。以下是关于这个属性的详细说明和如何使用: Maskable属性 Maskable属性: 当你在GameObject上添加一个Image组件(比如UI面板或按钮)时&…...
SpringCloud | 单体商城项目拆分(微服务)
为什么要进行微服务拆分? 在平常的商城项目中,我们一般的项目结构模块都是将各种业务放在同一个项目文件夹,比如像: 用户,购物车,商品,订单,支付等业务都是放在一起,这样…...
uniapp 如何实现路由拦截,路由守卫
uniapp框架的全局文件:page.json全局文件,官网链接 背景: 通过封装 UniApp 的路由方法,并在封装方法中添加自定义逻辑,可以实现类似 Vue Router 的路由守卫功能。 在 UniApp 框架中,不像 Vue Router 直接支…...
人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解
大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程13-神经网络的优化与设计之梯度问题及优化与代码详解。 文章目录 一、引言二、梯度问题1. 梯度爆炸梯度爆炸的概念梯度爆炸的原因梯度爆炸的解决方案 2. 梯度消失梯度消失的概念梯度…...
Qt/QML学习-ComboBox
QML学习 ComboBox例程视频讲解代码 main.qml import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.15Window {width: 640height: 480visible: truetitle: qsTr("ComboBox")ComboBox {id: comboBox// 列表项数据模型model: ListModel {List…...
微服务实战系列之玩转Docker(一)
前言 话说计算机的“小型化”发展,历经了大型机、中型机直至微型机,贯穿了整个20世纪的下半叶。同样,伴随着计算机的各个发展阶段,如何做到“资源共享、资源节约”,也一直是一代又一代计算机人的不懈追求和历史使命。今…...
Java中常见的语法糖
文章目录 概览泛型增强for循环自动装箱与拆箱字符串拼接枚举类型可变参数内部类try-with-resourcesLambda表达式 概览 语法糖是指编程语言中的一种语法结构,它们并不提供新的功能,而是为了让代码更易读、更易写而设计的。语法糖使得某些常见的编程模式或…...
数据库使用SSL加密连接
简介 数据库开通SSL加密连接是确保数据传输过程中安全性的关键措施,它通过加密数据、验证服务器身份、保护敏感信息、维护数据完整性和可靠性,同时满足行业标准和法规要求,进而提升用户体验和信任度,为企业的数据安全和业务连续性…...
华为OD算法题汇总
60、计算网络信号 题目 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值。注意:网络信号可以绕过阻隔物 array[m][n],二维数组代表网格地图 array[i][j]0,代表i行j列是空旷位置 a…...
服务器的rabbitmq的guest账号登不进去
要配置 RabbitMQ 允许 guest 账号从非 localhost 地址登录,需要执行以下步骤: 编辑 RabbitMQ 配置文件: 打开 RabbitMQ 的配置文件,通常位于 /etc/rabbitmq/rabbitmq.conf 或者 /etc/rabbitmq/rabbitmq-env.conf。如果这些文件不存…...
决策树(ID3,C4.5,C5.0,CART算法)以及条件推理决策树R语言实现
### 10.2.1 ID3算法基本原理 ### mtcars2 <- within(mtcars[,c(cyl,vs,am,gear)], {am <- factor(am, labels c("automatic", "manual"))vs <- factor(vs, labels c("V", "S"))cyl <- ordered(cyl)gear <- ordered…...
文心一言《使用手册》,文心一言怎么用?
一、认识文心一言 (一)什么是文心一言 文心一言是百度研发的 人工智能大语言模型产品,能够通过上一句话,预测生成下一段话。 任何人都可以通过输入【指令】和文心一言进行对话互动、提出问题或要求,让文心一言高效地…...
Spring Boot集成qwen:0.5b实现对话功能
1.什么是qwen:0.5b? 模型介绍: Qwen1.5是阿里云推出的一系列大型语言模型。 Qwen是阿里云推出的一系列基于Transformer的大型语言模型,在大量数据(包括网页文本、书籍、代码等)进行了预训练。 硬件要求:…...
终极指南:3步解锁网易云音乐NCM格式的完整Windows解决方案
终极指南:3步解锁网易云音乐NCM格式的完整Windows解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经下载了网易云音乐的歌曲&…...
别再找组策略了!Windows 11家庭版/专业版通用,一条命令搞定密码永不过期
Windows 11密码永不过期终极指南:告别繁琐设置,一条命令解决所有版本难题 每次开机都被"密码即将过期"的提示烦扰?作为Windows 11用户,你可能已经尝试过各种图形界面设置却无功而返。特别是家庭版用户,面对缺…...
WinAsar:告别命令行!551KB的Electron asar文件可视化处理神器
WinAsar:告别命令行!551KB的Electron asar文件可视化处理神器 【免费下载链接】WinAsar Portable and lightweight GUI utility to pack and extract asar( Electron archive ) files, Only 551 KB! 项目地址: https://gitcode.com/gh_mirrors/wi/WinA…...
别再手动改Hex了!用Vector HexView的/remap命令,5分钟搞定固件地址重映射
嵌入式开发革命:Vector HexView自动化重映射技术实战指南 在汽车电子和物联网设备开发中,固件地址调整如同家常便饭。每当内存布局变更、Bootloader升级或外设地址重新分配时,嵌入式工程师们就不得不面对一项枯燥且容易出错的任务——手动修改…...
WOM-v编码:用电压世代划分技术提升QLC闪存寿命4-11倍
1. 项目概述:当QLC闪存寿命告急,我们能做什么?作为一名长期关注存储技术的从业者,我最近一直在思考一个现实而紧迫的问题:随着QLC(四层单元)乃至PLC(五层单元)闪存成为消…...
我用了半年只留下这1个!2026年录音怎么转换成文字亲测准确率真的超高
我前后用了大半年录音转文字工具,试了免费小工具、大厂办公套件自带功能、好几个专门做转写的产品,踩了一堆坑之后最终只留了一个——听脑AI。作为常年要整理课堂录音、调研访谈的学生党,我可以负责任说,2026年做录音转文字&#…...
如何构建活跃的AI技能社区:Awesome Agent Skills线上线下活动完整指南
如何构建活跃的AI技能社区:Awesome Agent Skills线上线下活动完整指南 【免费下载链接】awesome-agent-skills A curated collection of 1000 agent skills from official dev teams and the community, compatible with Claude Code, Codex, Gemini CLI, Cursor, a…...
Google I/O 2026之外,声网搞定弱网通话难题
作为每日穿梭地铁的通勤上班族,我对日常使用的 AI 工具,始终只有一个核心诉求,那就是弱网场景下运行稳定,不会轻易出现故障。此前观看 2026 谷歌开发者大会时,我便心生期许,盼望日常通勤途中,也…...
谷歌“反重力”工具更新强行替换软件,用户恢复工作困难重重!
谷歌“反重力”工具更新强行替换软件,用户恢复工作困难重重!2026年5月21日,原本打算用“反重力”工具工作的用户,遭遇了谷歌的意外安排。前一天,谷歌在2026年I/O开发者大会上推出“反重力”工具新版本,将其…...
AI如何重塑移动App开发:从功能交付到智能服务的范式跃迁
1. 项目概述:当手机App开发不再只是“写代码”,而变成一场数据驱动的智能进化“How AI and ML are Turning the Mobile App Development Industry into a Smart Industry?”——这个标题不是一句空泛的行业口号,而是我过去三年深度参与17个中…...
