基于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%。這表明社會地位和經濟條件對幸存率有顯著影響。
  • 在各個船艙等級中,女性的幸存率均高于男性。然而,頭等艙男性的幸存率仍然高于三等艙女性的幸存率,這進一步強調了社會地位對幸存率的重要性。
  • 與家人同行的乘客往往更容易幸存,因為他們可以相互幫助和照顧。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/45506.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45506.shtml
英文地址,請注明出處:http://en.pswp.cn/web/45506.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

達夢數據庫系列—28. 主備集群高可用測試

目錄 監視器關閉 監視器啟動&#xff0c;Detach備庫 主備正常&#xff0c;手動switchover 主庫故障&#xff0c;自動switchover 主庫故障&#xff0c;手動Takeover 主庫故障&#xff0c;備庫強制takeover 主庫重啟 備庫故障 公網連接異常 主庫私網異常 備庫私網異常…

實現給Nginx的指定網站開啟basic認證——http基本認證

一、問題描述 目前我們配置的網站內容都是沒有限制&#xff0c;可以讓任何人打開瀏覽器都能夠訪問&#xff0c;這樣就會存在一個問題&#xff08;可能會存在一些惡意訪問的用戶進行惡意操作&#xff0c;直接訪問到我們的敏感后臺路徑進行操作&#xff0c;風險就會很大&#xff…

云原生周刊:Score 成為 CNCF 沙箱項目|2024.7.15

開源項目 Trident Trident 是由 NetApp 維護的全面支持的開源項目。它從頭開始設計&#xff0c;旨在通過行業標準接口&#xff08;如容器存儲接口 CSI&#xff09;幫助您滿足容器化應用程序對持久性存儲的需求。 Monokle Monokle 通過提供用于編寫 YAML 清單、驗證策略和管…

淺談微服務

技術方法論&#xff1a;向微服務邁進&#xff1a; 理論&#xff1a;“軟件研發中任何一項技術、方法、架構都不可能是銀彈"—Fred Brooks 哪些場景適合用微服務&#xff0c;呢些不適用&#xff1f;&#xff08;微服務存在哪些理解誤區、應用前提&#xff09; 一些被驗證過…

Why can‘t I access GPT-4 models via API, although GPT-3.5 models work?

題意&#xff1a;為什么我無法通過API訪問GPT-4模型&#xff0c;盡管GPT-3.5模型可以工作&#xff1f; 問題背景&#xff1a; Im able to use the gpt-3.5-turbo-0301 model to access the ChatGPT API, but not any of the gpt-4 models. Here is the code I am using to tes…

【雷豐陽-谷粒商城 】【分布式高級篇-微服務架構篇】【22】【RabbitMQ】

持續學習&持續更新中… 守破離 【雷豐陽-谷粒商城 】【分布式高級篇-微服務架構篇】【22】【RabbitMQ】 Message Queue 消息隊列異步處理應用解耦流量控制 消息中間件概念RabbitMQ概念MessagePublisherExchangeQueueBindingConnectionChannelConsumerVirtual HostBroker圖…

Django prefetch_related()方法

prefetch_related的作用 prefetch_related()是 Django ORM 中用于優化查詢性能的另一個重要方法&#xff0c;尤其在處理多對多&#xff08;ManyToMany&#xff09;關系和反向關系時非常有用。它允許你預加載相關對象&#xff0c;從而減少數據庫查詢次數。 1&#xff0c;創建應…

【香橙派】Orange pi AIpro開發板使用之一鍵部署springboot項目

前言 最近有幸收到一份新款 OrangePi AIpro 開發板&#xff0c;之前手里也搗鼓過一些板子&#xff0c;這次嘗試從零開始部署一個簡單的后端服務。OrangePi AIpro 采用昇騰AI技術路線&#xff0c;具體為4核64位處理器AI處理器&#xff0c;可配16GB內存容量&#xff0c;各種復雜應…

數字化賦能,加油小程序讓出行更便捷高效

在快節奏的現代生活中&#xff0c;每一次加油不僅是車輛續航的必要步驟&#xff0c;也成為了人們日常生活中不可或缺的一環。隨著科技的飛速發展&#xff0c;傳統加油模式正逐步向智能化、便捷化轉型&#xff0c;其中&#xff0c;加油小程序作為這股浪潮中的佼佼者&#xff0c;…

el-date-picker手動輸入日期,通過設置開始時間和階段自動填寫結束時間

需求&#xff1a;根據開始時間&#xff0c;通過填寫階段時長&#xff0c;自動填寫結束時間&#xff0c;同時開始時間和節數時間可以手動輸入 代碼如下&#xff1a; <el-form ref"ruleForm2" :rules"rules2" :model"formData" inline label-po…

B樹與B+樹的區別

B樹和B樹都是用于數據庫和文件系統的平衡樹數據結構&#xff0c;但它們有一些顯著的區別&#xff1a; 節點結構&#xff1a; B樹&#xff1a;每個節點存儲數據和指向子節點的指針。葉子節點也包含數據。 B樹&#xff1a;內部節點只存儲索引值&#xff0c;不存儲實際數據。所有…

yolov5 上手

0 介紹 YOLO(You Only Look Once)是一種流行的物體檢測和圖像分割模型&#xff0c;由華盛頓大學的約瑟夫-雷德蒙&#xff08;Joseph Redmon&#xff09;和阿里-法哈迪&#xff08;Ali Farhadi&#xff09;開發。YOLO 于 2015 年推出&#xff0c;因其高速度和高精確度而迅速受到…

人工智能算法工程師(中級)課程13-神經網絡的優化與設計之梯度問題及優化與代碼詳解

大家好&#xff0c;我是微學AI&#xff0c;今天給大家介紹一下人工智能算法工程師(中級)課程13-神經網絡的優化與設計之梯度問題及優化與代碼詳解。 文章目錄 一、引言二、梯度問題1. 梯度爆炸梯度爆炸的概念梯度爆炸的原因梯度爆炸的解決方案 2. 梯度消失梯度消失的概念梯度…

vue2中父組件向子組件傳值不更新視圖問題解決

1. 由于父組件更新了props里面的值, 但是子組件第一次接收后再修改沒有監聽到. 父組件修改值的時候使用this$set解決問題. 在 Vue 2 中&#xff0c;this.$set 通常用于更新數組中的特定元素。如果你想更新整個數組&#xff0c;可以直接賦值一個新的數組&#xff0c;或者你可以…

powerdesigner導出表數據庫設計文檔excel

1、連接數據庫&#xff0c;導出表結構的sql腳本 2、打開powerdesigner&#xff0c;生成項目空間表 sql腳本用第一步的腳本 3、用script腳本生成excel 腳本信息 Option Explicit Dim rowsNum rowsNum 0 -------------------------------------------------------------…

CV12_ONNX轉RKNN模型(諦聽盒子)

暫時簡單整理一下&#xff1a; 1.在邊緣設備上配置相關環境。 2.配置完成后&#xff0c;獲取模型中間的輸入輸出結果&#xff0c;保存為npy格式。 3.將onnx格式的模型&#xff0c;以及中間輸入輸出文件傳送到邊緣設備上。 4.編寫一個python文件用于轉換模型格式&#xff0c…

Git---git本地配置commit_template提交模板,規范開發

如何在Git中配置Commit Template以規范開發 在軟件開發過程中&#xff0c;規范化的提交信息&#xff08;commit messages&#xff09;對于項目的可維護性和協作效率至關重要。Git 提供了配置 commit template 的功能&#xff0c;允許開發者預設一個模板&#xff0c;用于在提交…

[iOS]內存分區

[iOS]內存分區 文章目錄 [iOS]內存分區五大分區棧區堆區全局區常量區代碼區驗證內存使用注意事項總結 函數棧堆棧溢出棧的作用 參考博客 在iOS中&#xff0c;內存主要分為棧區、堆區、全局區、常量區、代碼區五大區域 還記得OC是C的超類 所以C的內存分區也是一樣的 iOS系統中&a…

51單片機STC89C52RC——19.1 SG90舵機(伺服電機)

目的/效果 獨立按鍵K1&#xff0c;K2 實現加舵機減角度增減&#xff0c;LCD1602顯示舵機轉角度數&#xff08;上電默認90度&#xff09; 一&#xff0c;STC單片機模塊 二&#xff0c;SG90舵機 2.1 簡介 舵機只是我們通俗的叫法&#xff0c;它的本質是一個伺服電機&#xf…

react 案例的實現

先看一下如下效果 效果 這是一個 簡單的 效果 左邊是用戶名進行登錄 右邊是一個答題還有遮罩 相信大家還有剛剛創建好的 react 腳手架了&#xff0c;沒有的話可以運行以下命令 creact-react-app 項目名稱 把項目名稱四個字 改成 自己想要的一個名字 最好是英文的在 App.js中去…