Tipo de datos de colmena, lenguaje de definición de datos DDL, manipulación de datos DML

tipo de datos

Tipo de datos básico

Tipo de datos de Hive Tipos de datos de Java longitud ejemplo
TINYINT byte Entero con signo de 1 byte 20
SMALINT corto Entero de 2 bytes con signo 20
EN T En t Entero de 4 bytes con signo 20
EMPEZANDO largo Entero de 8 bytes con signo 20
BOOLEAN booleano Tipo booleano, verdadero o falso VERDADERO FALSO
FLOTADOR flotador Punto flotante de precisión simple 3.14159
DOBLE doble Punto flotante de doble precisión 3.14159
CUERDA cuerda Cadena, puede especificar el juego de caracteres, puede usar comillas simples o dobles 'Buenos días Buenas tardes"
TIMESTAMP Tipo de tiempo
BINARIO Matriz de bytes

    El tipo String de Hive es equivalente al tipo varchar de la base de datos, que es una cadena variable . Sin embargo, no puede indicar cuántos caracteres se pueden almacenar como máximo, en teoría puede almacenar 2 GB de caracteres.

Tipo de datos de colección

tipo de datos descripción
ESTRUCTURA Similar a la estructura en el lenguaje c, se puede acceder al contenido del elemento a través del símbolo de "punto". Por ejemplo, si el tipo de datos de una columna es STRUCT {first STRING, last STRING}, el primer elemento puede ser referenciado por el campo .first
MAPA MAP es un conjunto de tuplas de pares clave-valor, y se puede acceder a los datos mediante la notación de matriz. Por ejemplo, si el tipo de datos de una columna es MAP, y los pares clave-> valor son 'first' -> 'John' y 'last' -> 'Doe', entonces el último se puede obtener por el nombre de campo ['last'] elemento
FORMACIÓN Una matriz es una colección de variables con el mismo tipo y nombre. Estas variables se denominan elementos de la matriz y cada elemento de la matriz tiene un número que comienza desde cero. Por ejemplo, si el valor de la matriz es ['John', 'Doe'], el nombre de la matriz puede hacer referencia al segundo elemento [1]
create table test(
	name string,
	friends array<string>,
	children map<string, int>,
	address struct<street:string, city:string>
)
row format delimited
fields terminated by ','				列分隔符
collection items terminated by '_'		MAP,STRUCT,和ARRAY 的分隔符(数据分割符号)
map keys terminated by ':'				MAP中的key与value的分隔符
lines terminated by '\n';				行分隔符

Conversión de tipo

    Los tipos de datos básicos de Hive se pueden convertir implícitamente, de forma similar a la conversión de tipos de Java. Por ejemplo, TINYINT se convierte automáticamente al tipo INT. Sin embargo, Hive no realizará la conversión inversa. Por ejemplo, INT no se convertirá automáticamente al tipo TINYINT.
    Las reglas de conversión de tipos implícitas son las siguientes

  1. Cualquier tipo de entero se puede convertir implícitamente a un tipo más amplio, como TINYINT se puede convertir a INT, INT se puede convertir a BIGINT.
  2. Todos los tipos de enteros, los tipos FLOAT y STRING se pueden convertir implícitamente a DOUBLE.
  3. TINYINT, SMALLINT, INT se pueden convertir a FLOAT.
  4. El tipo BOOLEAN no se puede convertir a ningún otro tipo.

    Utilice la operación CAST para mostrar la conversión del tipo de datos, por ejemplo, CAST ('1' AS INT) convertirá la cadena '1' en un entero 1. Si la conversión de tipo falla, como ejecutar CAST ('X' AS INT), la expresión devuelve El valor nulo es NULL.

Lenguaje de definición de datos DDL

Crear base de datos

create database if not exists hive;

    Cree una base de datos, especifique la ubicación donde se almacena la base de datos en HDFS y la carpeta * .db no aparecerá

Create database if not exists hive location '/hive';

Base de datos de consultas

    Mostrar base de datos

show datatbases;

    Mostrar información de la base de datos

desc database hive;

    Mostrar detalles de la base de datos

desc database extended hive;

Modificar y eliminar la base de datos

    Otra información de metadatos de la base de datos no se puede cambiar, incluido el nombre de la base de datos y la ubicación del directorio donde se encuentra la base de datos.

alter database hive set dbproperties('createtime'='20200528');

    Eliminar base de datos vacía

drop database if exists hive;

    Utilice cascada en cascada para eliminar bases de datos vacías

drop database if exists hive cascade;

Crear mesa

    Crear sintaxis de tabla

CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]

    Tabla de creación ordinaria

create table if not exists student(
	id int, name string
)
row format delimited fields terminated by '\t'
stored as textfile
location '/hive/warehouse/student';

    Cree una tabla basada en el resultado de la consulta (el resultado de la consulta se agregará a la tabla recién creada)

create table if not exists student as select id,name from person;

    Cree una tabla basada en una estructura de tabla existente

create table if not exists student like person;

    Tipo de tabla de búsqueda

desc formatted student;

Mesas internas y externas

    Las tablas creadas por defecto son las llamadas tablas de gestión, a veces llamadas tablas internas. Cuando eliminamos una tabla de administración, Hive también eliminará los datos de esta tabla.
    La palabra clave EXTERNAL permite a los usuarios crear una tabla externa y especificar una ruta a los datos reales (UBICACIÓN) mientras crean la tabla. Cuando Hive crea una tabla interna, moverá los datos a la ruta apuntada por el almacén de datos; si se crea una tabla externa, solo Registre la ruta donde se encuentran los datos y no realice ningún cambio en la ubicación de los datos. Cuando se elimina una tabla, los metadatos y los datos de la tabla interna se eliminarán juntos, mientras que la tabla externa solo elimina los metadatos, no los datos .
    Escenario de aplicación: los registros del sitio web recopilados se transmiten regularmente a archivos de texto HDFS todos los días. Realice muchos análisis estadísticos sobre la base de tablas externas (tablas de registro originales) Las tablas intermedias y las tablas de resultados utilizadas se almacenan en tablas internas y los datos ingresan a las tablas internas a través de SELECT + INSERT.
    Para la conversión entre tablas de gestión y tablas externas, tenga en cuenta: ('EXTERNAL' = 'TRUE') y ('EXTERNAL' = 'FALSE') deben estar en mayúscula.

alter table student set tblproperties('EXTERNAL'='TRUE');

Tabla de particiones

    La tabla de particiones en realidad corresponde a una carpeta independiente en el sistema de archivos HDFS, y todos los archivos de datos de la partición se encuentran en esta carpeta. La partición en Hive es el subdirectorio , que divide un gran conjunto de datos en pequeños conjuntos de datos de acuerdo con las necesidades comerciales. Al consultar, seleccione la partición especificada requerida por la consulta a través de la expresión en la cláusula WHERE Esta eficiencia de la consulta aumentará mucho. El formato de la tabla de particiones es el siguiente:

/hive/warehouse/log_partition/20170702/20170702.log
/hive/warehouse/log_partition/20170703/20170703.log
/hive/warehouse/log_partition/20170704/20170704.log

    Crear tabla de particiones

create table log_partition(
	dname string, loc string
)
partitioned by (month string)
row format delimited fields terminated by '\t';

    Cargar datos en la tabla de particiones

load data local inpath '/opt/test.txt' into table log_partition partition(month='202005');

    Consultar los datos en la tabla de particiones

select * from loc_partition where month='202005';

    Aumentar la partición

alter table log_partition add partition(month='202005');

    Crea múltiples particiones separadas por espacios

alter table log_partition add partition(month='202005') partition(month='202006');

    Eliminar partición

alter table log_partition drop partition(month='202005');

    Eliminar varias particiones, separadas por comas

alter table log_partition drop partition(month='202005'),partition(month='202006');

    Ver cuántas particiones tiene la tabla de particiones

show partitions log_partition;

    Ver la estructura de la tabla de particiones

desc formatted log_partition;

    Crea una tabla de partición secundaria

create table log_partition(
	dname string, loc string
)
partitioned by (month string,day string)
row format delimited fields terminated by '\t';

    Cargar datos en la tabla de particiones secundaria

load data local inpath '/opt/test.txt' into table log_partition partition(month='202005',day='28');

Datos y metadatos

    Los datos de consulta de Hive son consultar primero los metadatos y luego obtener los datos reales basados ​​en los metadatos. La consulta de Hive tiene dos condiciones: 1. Los metadatos existen. 2. Hay datos reales. Independientemente de si se trata de los primeros datos o de los primeros metadatos, los datos se pueden consultar siempre que se cumplan ambas condiciones. Si falta uno de ellos, los datos no se pueden consultar.

hadoop fs -mkdir -p /hive/warehouse/test
hadoop fs -put /opt/test.txt /hive/warehouse/test
msck repair table test;
select * from test;

Modificar tabla

    Cambiar el nombre de la tabla

alter table student rename to pupil;

    Añadir columna

alter table pupil add column(grade int);

    Actualice la columna, preste atención a la necesidad de agregar el tipo

alter table pupil change column name last_name string;

    Reemplazar columna, REPLACE es reemplazar todos los campos de la tabla.

alter table pupil replace column(id int,name string);

    Eliminar tabla

 drop table pupil;

Manipulación de datos DML

importación de datos

  1. Cargar datos en la tabla ( Cargar )

    Cargar archivos locales en la colmena de la tabla

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

    Cargue archivos HDFS en la colmena de la tabla

load data inpath '/test.txt' into table hive;

    Cargar datos para sobrescribir los datos existentes en la tabla

load data inpath '/test.txt' overwrite into table hive;
  1. Insertar datos en la tabla ( Insertar )

    Datos de inserción básicos

insert into table student partition(month='202005') values(1,'abc');
insert into table student partition(month='202005') select * from table;

    Crear tabla y cargar datos (como se selecciona)

create table if not exists student as select id, name from student;

    Especifique la ruta para cargar los datos a través de la ubicación al crear la tabla

create table if not exists student(
	id int, name string
)
row format delimited fields terminated by '\t'
location '/hive/warehouse/student';

hadoop fs -put /opt/test.txt /hive/warehouse/student
select * from student;

     Importe datos a la tabla de Hive especificada. Nota: Primero use la exportación para exportar y luego importe los datos, ya que la exportación generará archivos de metadatos al exportar tablas, y la importación necesita metadatos.

export table temptable to '/hive/warehouse/export/student';
import table student partition(month='202005') from '/hive/warehouse/export/student';

Salida de datos

    insertar exporta los resultados de la consulta al local

insert overwrite local directory '/opt/test' select * from student;

    Dar formato y exportar los resultados de la consulta a local

insert overwrite local directory '/opt/test' row format delimited fields terminated by '\t' select * from student;

    Exportar los resultados de la consulta a HDFS (no local)

insert overwrite directory '/opt/test' select * from student;

    Exportar comandos de Hadoop a local

hadoop fs -get /hive/warehouse/test.txt /opt/test.txt

    Exportación de comandos de Hive Shell

hive -e 'select * from student;' > /opt/student.txt;

    Exportar a HDFS

export table student to /hive/warehouse/student;

Borrar datos de la tabla (truncar)

    Truncar solo puede eliminar tablas de administración, no datos en tablas externas

truncate table student;

Supongo que te gusta

Origin blog.csdn.net/H_X_P_/article/details/106392001
Recomendado
Clasificación