Creación de tablas básicas de Hive

1. Tipos de datos especiales de Hive

        Hive es generalmente similar a mysql, pero hay más tipos de datos: tipos de datos de recopilación:

        ARRAY: Los datos almacenados son del mismo tipo

        MAP: pares clave-valor con el mismo tipo

        STRUCT: encapsula un conjunto de campos

tipo Formato definición
formación ['aaa', 'bbb', 'bbb'] ARRAY<cadena>
mapa {'A':'Ápice','B':'Abeja'} MAP<cadena,cadena>
estructura {'aaa', 666} STRUCT<fruta:cadena,peso:int>

2. Crea una tabla estática

        Declaración para crear una tabla estática:

create table if not exists employee(
    name string,
    work_place array<string>,
    gender_age struct<gender:string,age:int>,
    skills_score map<string,int>,
    depart_title map<string,string>
)
row format delimited fields terminated by '|'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n';

formato de fila delimitado    : declaración de inicio de configuración del delimitador

campos terminados en '|'    : establezca el separador entre campos en "|"
elementos de colección terminados en ','  : establezca el separador entre cada elemento de un campo de tipo complejo (matriz, estructura) en ","
claves de mapa terminadas en ': '    : establezca el separador entre el valor clave de un campo de tipo complejo (mapa) en ":"
líneas terminadas en '\n';   : establezca el separador entre líneas en "\n"

        Importe datos de un archivo local a una tabla:

 load data local inpath '/opt/employee.txt' into table employee;

        Importe datos de un archivo de servidor a una tabla:

load data inpath '/employee.txt' into table employee;

        Sobrescribir datos de un archivo en una tabla:

load data inpath '/employee.txt' overwrite  into table employee;

3. Crea una tabla de particiones

        La declaración para crear una tabla particionada:

create table employee2(
    name string,
    work_place array<string>,
    gender_age struct<gender:string,age:int>,
    skills_score map<string,int>,
    depart_title map<string,string>
)
partitioned by (age int) --以age作为分区依据
row format delimited 
fields terminated by '|'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n';

        Importar datos en una tabla particionada:

load data local inpath '/opt/employee.txt' into table employee2 partition(age=20);
load data local inpath '/opt/employee.txt' into table employee2 partition(age=30);

        Ver información de partición de la tabla de particiones:

show partitions employee2;

4. Mesas internas y externas

Las tablas de datos se dividen en tablas internas y tablas externas.

Mesa interna (mesa de gestión)

  • En HDFS, es una subcarpeta en el directorio de la base de datos al que pertenece
  • Hive administra completamente los datos, al eliminar la tabla (metadatos) se eliminarán los datos

Mesas Externas

  • Los datos se guardan en la ruta HDFS en la ubicación especificada
  • Hive no administra completamente los datos, al eliminar tablas (metadatos) no se eliminan los datos

Las dos tablas de empleados creadas arriba son tablas internas.

        Declaración para crear una tabla externa:


create external table if not exists employee(
    name string,
    work_place array<string>,
    gender_age struct<gender:string,age:int>,
    skills_score map<string,int>,
    depart_title map<string,string>
)
row format delimited 
fields terminated by '|'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n
location '/tmp/hivedata/employee';

Para crear una tabla externa, agregue una externa después de crear    

ubicación '/tmp/hivedata/employee'; significa: especificar la ruta de almacenamiento de datos (HDFS)    

Supongo que te gusta

Origin blog.csdn.net/Alcaibur/article/details/129188080
Recomendado
Clasificación