[Notas pessoais] Tipos complexos de colmeia

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/';

Acho que você gosta

Origin blog.csdn.net/m0_49303490/article/details/128276240
Recomendado
Clasificación