1. 程式人生 > 其它 >Java錯題集(十二)

Java錯題集(十二)

技術標籤:hive

Hive分析疫情資料

拿到的資料部分如下:
4月27日,黑龍江,境外輸入-不詳,0,45,0,黑龍江衛健委,https://m.thepaper.cn/newsDetail_forward_7160075,
4月27日,內蒙古,境外輸入-不詳,0,8,0,央視新聞,http://m.news.cctv.com/2020/04/27/ARTIxjwZSGhg1SXUn7Fv1ZsL200427.shtml,
4月27日,廣東,境外輸入-英國,1,0,0,央視新聞,http://m.news.cctv.com/2020/04/27/ARTIm0wxg5x059nT757vufcQ200427.shtml,
4月27日,浙江,境外輸入-不詳,0,1,0,央視新聞,http://m.news.cctv.com/2020/04/27/ARTIvZvXpkUgAEj09kd1a5tY200427.shtml,

4月27日,山東,境外輸入-不詳,0,1,0,央視新聞,http://m.news.cctv.com/2020/04/27/ARTIoCVnQVvaCRqP6GYBLmHU200427.shtml,
4月27日,香港,0,19,0,國家衛健委,http://m.news.cctv.com/2020/04/27/ARTIeHOtUgep4DL4b6e9XHI2200427.shtml,

1、在hdfs根目錄下中建立一個目錄將以上疫情資料上傳到這個目錄中:

hadoop fs -mkdir /Hive_Data
hadoop fs -put /usr/local/Hive_Data/yiqing.csv /Hive_Data

2、在hive中建立資料庫名為: ods_yiqing_data

create database ods_yiqing_data;
use ods_yiqing_data;

3、建立一個hive外部表,欄位為以上疫情資料全部欄位 從hdfs 上載入資料:

create EXTERNAL table Hive_Data_EX
(
date_tine  string,
shengfen string,
city string,
addpa int,
addout int,
adddeath int,
ins string,
ins1 string,
ins2 string,
ins3 string 
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
location '/Hive_Data'; load data inpath '/Hive_Data/yiqing.csv' into table Hive_Data_EX;

結果截圖:
在這裡插入圖片描述

4、統計湖北省各市2月新增確診病例總數,按照總數降序排列

select sum(addpa) as addsum,city from 
Hive_Data_EX where shengfen = '湖北' and date_tine like '2月%'
group by city order by addsum desc ;

5、統計檔案中安徽省合肥市每月新增確診病例總數,按照降序排列,

select sum(addpa) as asum,substr(date_tine,0,2) as m
from Hive_Data_EX
where city= '合肥市'
group by substr(date_tine,0,2) order by asum desc;

結果截圖:
在這裡插入圖片描述

6、統計檔案中湖北每月新增出院病例總數最多的前2個城市

SQL排序函式ROW_NUMBER() over() 晚於where group by order by執行 在我看來就是一個打標記的功能

select * from
(select substr(date_tine,0,2),city,sum(addout) as sout,ROW_NUMBER() over(partition by substr(date_tine,0,2) order by sum(addout)  desc) as rk
from Hive_Data_EX
where shengfen = '湖北'
group by substr(date_tine,0,2),city) as a
where a.rk<3;

在這裡插入圖片描述