Os tipos de dados do hive são muito ricos, então não vamos falar sobre os simples, apenas falar sobre o entendimento e uso de vários tipos complexos comumente usados.
Segundo o site oficial , existem 4 tipos complexos de colmeia:
Tipos complexos:
1. arrays: ARRAY<data_type> (Nota: valores negativos e expressões não constantes são permitidos a partir do Hive 0.14.)
2. mapas: MAP<primitive_type, data_type> (Nota: valores negativos e não -expressões constantes são permitidas a partir do Hive 0.14.)
3. structs: STRUCT<col_name : data_type [COMMENT col_comment], …>
4. union: UNIONTYPE<data_type, data_type, …> (Nota: disponível apenas a partir do Hive 0.7.0 .)
Nosso cotidiano Os três primeiros são comumente usados, só precisamos entender que são definição, valor e construção. Eles podem ser usados na colmeia.
ARRAY
definição: valor do array
: arr[0]
construção: array(val2, val2, val3,...), split(), COLLECT_SET()
definição do mapa
: map<String, String>
value: map[key]
construct L: map(key1, value1, key2, value2, ...)
struct:
Definição: struct<a:string,b:string>
Valor: struct.id
Construção: name_struct(name1,val1,name2,val2,name3,val3,…)
- Há uma pequena diferença entre o uso de map e struct:
- Os tipos no mapa são os mesmos, podemos saber de acordo com nossa definição
- Os tipos na estrutura podem ser diferentes.
Aqui está uma instrução de criação de tabela de cena simples:
CREATE EXTERNAL TABLE ods_log_inc
(
`common` STRUCT<ar :STRING,ba :STRING,ch :STRING,is_new :STRING,md :STRING,mid :STRING,os :STRING,uid :STRING,vc:STRING> ,
`page` STRUCT<during_time :STRING,item :STRING,item_type :STRING,last_page_id :STRING,page_id:STRING,source_type :STRING> ,
`actions` ARRAY<STRUCT<action_id:STRING,item:STRING,item_type:STRING,ts:BIGINT>> ,
`displays` ARRAY<STRUCT<display_type :STRING,item :STRING,item_type :STRING,`order` :STRING,pos_id:STRING>> ,
`start` STRUCT<entry :STRING,loading_time :BIGINT,open_ad_id :BIGINT,open_ad_ms :BIGINT,open_ad_skip_ms:BIGINT> ,
`err` STRUCT<error_code:BIGINT,msg:STRING> ,
`ts` BIGINT
)
PARTITIONED BY (`dt` STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.JsonSerDe'
LOCATION '/warehouse/gmall/ods/ods_log_inc/';