Los tipos de datos de Hive son muy ricos, así que no hablemos de los simples, solo hablemos de la comprensión y el uso de varios tipos complejos de uso común.
Según el sitio web oficial , hay 4 tipos complejos de colmena:
Tipos complejos:
1. matrices: ARRAY<tipo_de_datos> (Nota: se permiten valores negativos y expresiones no constantes a partir de Hive 0.14).
2. mapas: MAP<tipo_primitivo, tipo_de_datos> (Nota: valores negativos y expresiones no constantes) -las expresiones constantes están permitidas a partir de Hive 0.14.)
3. structs: STRUCT<col_name : data_type [COMMENT col_comment], …>
4. union: UNIONTYPE<data_type, data_type, …> (Nota: solo disponible a partir de Hive 0.7.0 .)
Nuestro diario Los primeros tres son de uso común, solo debemos entender que son definición, valor y construcción. Se pueden utilizar en colmena.
Definición de ARRAY
: valor de matriz: construcción arr[0]
: matriz(val2, val2, val3,...), split(), COLLECT_SET()
definición de mapa
: mapa<Cadena, Cadena>
valor: mapa[clave]
construcción L: mapa(clave1, valor1, clave2, valor2, ...)
struct:
Definición: struct<a:string,b:string>
Valor: struct.id
Construcción: name_struct(name1,val1,name2,val2,name3,val3,…)
- Hay una pequeña diferencia entre el uso de map y struct:
- Los tipos en el mapa son los mismos, podemos saber de acuerdo a nuestra definición
- Los tipos en la estructura pueden ser diferentes.
Aquí hay una declaración de creación de tabla de escena simple:
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/';