一般情況下,數倉儲存的資料型別都是整型(bigint),字串型(string),浮點型(double),但是有些時候也需要用到一些復合資料結構來儲存資料,常用的復合資料結構有map,array,struct,本文將主要針對這三種資料型別做乙個介紹
型別定義方法
描述array
array < data_type >
array陣列,主要是是以陣列形式儲存可以通過欄位名[0]進行訪問,其中0表示的是陣列中的第一位,以此類推
mapmap < primitive_type, data_type >
map資料型別,主要是以k:v形式進行儲存可以通過欄位名[『key』]進行訪問,將返回這個key對應的value
struct
struct < col_name : data_type [comment col_comment], …>
struct結構體,主要以結構體形式進行儲存可以通過欄位名.列名進行訪問,其中列名就是定義中的col_name
# 建立資料庫表
create
table score
(name string
, score mapint>
)row format delimited
fields
terminated
by'\t'
collection items terminated
by','
map keys
terminated
by':'
;# 要入庫的資料
biansutao '數學':80
,'語文':89
,'英語':95
jobs '語文':60
,'數學':80
,'英語':99
# 入庫資料
load
data
local inpath '/home/hadoop/score.txt' overwrite into
table score;
# 查詢
hive>
select
*from score;
biansutao
jobs
time taken: 0.665 seconds
hive>
select name from score;
jobs
biansutao
time taken: 19.778 seconds
hive>
select t.score from score t;
time taken: 19.353 seconds
hive>
select t.score[
'語文'
]from score t;
6089
time taken: 13.054 seconds
hive>
select t.score[
'英語'
]from score t;
9995
time taken: 13.769 seconds
# 建立資料庫表,以array作為資料型別
create
table person(
name string
,work_locations array
)row format delimited
fields
terminated
by'\t'
collection items terminated
by','
;# 資料
biansutao beijing,shanghai,tianjin,hangzhou
linan changchu,chengdu,wuhan
# 入庫資料
load
data
local inpath '/home/hadoop/person.txt' overwrite into
table person;
# 查詢
hive>
select
*from person;
biansutao [
"beijing"
,"shanghai"
,"tianjin"
,"hangzhou"
]linan [
"changchu"
,"chengdu"
,"wuhan"
]time taken: 0.355 seconds
hive>
select name from person;
linan
biansutao
time taken: 12.397 seconds
hive>
select work_locations[0]
from person;
changchu
beijing
time taken: 13.214 seconds
hive>
select work_locations from person;
["changchu"
,"chengdu"
,"wuhan"][
"beijing"
,"shanghai"
,"tianjin"
,"hangzhou"
]time taken: 13.755 seconds
hive>
select work_locations[3]
from person;
null
hangzhou
time taken: 12.722 seconds
hive>
select work_locations[4]
from person;
null
null
time taken: 15.958 seconds
# 建立資料表
create
table test(
id int
,course struct>
)row format delimited
fields
terminated
by'\t'
collection items terminated
by','
;# 資料
1 english,
802 math,
893 chinese,
95# 入庫
load
data
local inpath '/home/hadoop/test.txt' overwrite into
table test;
# 查詢
hive>
select
*from test;
ok1
2
3
time taken: 0.275 seconds
hive>
select course from test;
time taken: 44.968 seconds
select t.course.course from test t;
english
math
chinese
time taken: 15.827 seconds
hive>
select t.course.score from test t;
8089
95time taken: 13.235 seconds
hive中的復合資料型別
array中的資料為相同型別,例如,假如array a中元素 a b c 則a 1 的值為 b 資料結構如下 zhangsan beijing,shanghai,tianjin,hangzhou wangwu shanghai,chengdu,wuhan,haerbin create table c...
復合資料型別
復合資料型別 作用 封裝資料 多種不同型別資料存放在一起 應存放在全域性,在訪問結構體中的變數時,應用stu.id stu.name 初始化的方式 在對陣列進行初始化時 strcpy stu.name,zhangsan 在對指標進行初始化時 char name 對name進行初始化 stu.name...
復合資料型別
一 struct結構體 封裝資料 存放多種不同的資料型別 struct的宣告放在全域性區 1.宣告和定義 宣告 struct student struct student stu array 3 int i for i 0 i 3 i for i 0 i 3 i include struct stu...