id course
1,a
1,b
1,c
1,e
2,a
2,c
2,d
2,f
3,a
3,b
3,c
3,e
(2)字段含義
表示有id為1,2,3的學生選修了課程a,b,c,d,e,f中其中幾門。
建表語句
create table t_course(id int,course string)
row format delimited fields terminated by ","
匯入資料
load data local inpath "/home/hadoop/course/course.txt" into table t_course;
編寫hive的hql語句來實現以下結果:表中的1表示選修,表中的0表示未選修
id a b c d e f
1 1 1 1 0 1 0
2 1 0 1 1 0 1
3 1 1 1 0 1 0
首先 將資料進行整理
createcollect_set(屬性名) 收集屬性 所對應的value 將所有的value 放入乙個 陣列中 且不重複table id_courses as
select t1.id as id,t1.course as
id_courses,t2.course courses
from
( select id as id,collect_set(course) as course from t_course group
byid ) t1
join
(select collect_set(course) as course from t_course) t2;
舉個例子 根據id 來獲取id所對應的
繼續回到 題目 檢視一下當前的表id_courses
進行下一步 將 idcourses 與 courses 進行對比 篩選出我們的資料
補充一下
array_contains(陣列, value) 用於 判斷 陣列中是否還有value 如果存在返回true
case when (條件)
then 條件成立
else
條件不成立
end
Hive練習題目
hive 基本操作 1 資料自己造 a表 id int,name string b表 id int,job id int,num int c表 job id int,job string 建表語句 載入資料 a表和b表進行鏈結操作,並觀察結果 內連線 左連線 left join 小表在前,大表在後 ...
Hive視窗函式練習題
0 jdbc hive2 node03 10000 create table view log name string,time string,views int row format delimited fields terminated by 0 jdbc hive2 node03 10000 ...
CCF 練習題201703 2 學生排隊
體育老師小明要將自己班上的學生按順序排隊。他首先讓學生按學號從小到大的順序排成一排,學號小的排在前面,然後進行多次調整。一次調整小明可能讓一位同學出隊,向前或者向後移動一段距離後再插入佇列。例如,下面給出了一組移動的例子,例子中學生的人數為8人。0 初始佇列中學生的學號依次為1,2,3,4,5,6,...