La gran lengua vernácula explica los puntos de conocimiento de la colmena de big data en detalle, Lao Liu está realmente atento (2)

Inserte la descripción de la imagen aquí

Lao Liu no se atrevió a decir qué tan buena era su escritura, pero prometió explicar en detalle el contenido de su reseña en un inglés sencillo tanto como fuera posible, y se negó a usar métodos mecánicos en los materiales, para tener su propio ¡comprensión!

1. Puntos de conocimiento de la colmena (2)

Inserte la descripción de la imagen aquí
Punto 12: mesa de cubo de colmena

Los puntos de conocimiento de la colmena son principalmente práctica. Mucha gente piensa que los comandos básicos no necesitan ser memorizados. Sin embargo, si los comandos básicos se construyen en el suelo, no importa cuán básicos sean, deben practicar bien y practicar más.

En la colmena, el agrupamiento es una división de particiones más detallada. Entre ellos, la partición es para la ruta de almacenamiento de los datos y el depósito es para el archivo de datos. Lao Liu compara las dos imágenes relacionadas para comprender la diferencia que se acaba de mencionar.

El primero son los cambios después de la partición de la tabla: El
Inserte la descripción de la imagen aquí
segundo son los cambios después de la partición de la tabla : de
Inserte la descripción de la imagen aquí
acuerdo con estas dos imágenes, puede comprender aproximadamente la diferencia entre particionar y agrupar.

Ahora que he visto estas dos imágenes, ¡debería quedar bastante claro cuál es el binning!

¿Qué es el agrupamiento?

El agrupamiento consiste en distinguir todo el contenido de los datos según el valor hash de un determinado valor de atributo de columna, y los datos con el mismo valor hash ingresan al mismo archivo.

Para ilustrar: Por ejemplo, de acuerdo con el atributo de nombre dividido en 3 cubos, es decir, el valor hash del valor del atributo de nombre es módulo 3, y los datos se dividen en cubos según el resultado del módulo.

El registro de datos cuyo resultado de módulo es 0 se almacena en un archivo;

El registro de datos cuyo resultado de módulo es 1 se almacena en un archivo;

El registro de datos con el resultado del módulo de 2 se almacena en un archivo;
el registro de datos con el resultado del módulo de 3 se almacena en un archivo;
como hay demasiados casos de la tabla de cubos, puede buscar una práctica.

Punto 13: colmena modificar la estructura de la tabla

De hecho, no hay nada que decir sobre este punto. Se menciona en la información, y Lao Liu también habló de ello. Solo recuerde algunos comandos.

修改表的名称
alter table stu3 rename to stu4;

表的结构信息
desc formatted stu4;

Punto 14: importación de datos de colmena

Esta parte es muy importante, porque después de crear la tabla, lo que tienes que hacer es importar los datos a la tabla. Si ni siquiera puedes usar los comandos básicos para importar datos, definitivamente no está calificado. Esta es una base importante!

1. Cargar datos a través de la carga (debe anotarse)

通过load方式加载数据
load data local inpath '/kkb/install/hivedatas/score.csv' overwrite into table score3 partition(month='201806');

2. Cargar datos por consulta (debe estar escrito)

通过查询方式加载数据
create table score5 like score;
insert overwrite table score5 partition(month = '201806') select s_id,c_id,s_score from score;

Punto 15: exportación de datos de colmena

1. Insertar exportación

将查询的结果导出到本地
insert overwrite local directory '/kkb/install/hivedatas/stu' select * from stu;

将查询的结果格式化导出到本地
insert overwrite local directory '/kkb/install/hivedatas/stu2' row format delimited fields terminated by  ',' select * from stu;

将查询的结果导出到HDFS上(没有local)
insert overwrite  directory '/kkb/hivedatas/stu'  row format delimited fields terminated by  ','  select * from stu;

Punto 16: Partición estática y partición dinámica

Hive tiene dos tipos de particiones, una es una partición estática, es decir, una partición ordinaria. El otro es el particionamiento dinámico.

Partición estática: al cargar una tabla de particiones, cargue datos en una tabla de particiones mediante consulta y debe especificar el valor del campo de partición.

Aquí hay un pequeño ejemplo para demostrar la diferencia entre los dos.

1、创建分区表
use myhive;
create table order_partition(
order_number string,
order_price  double,
order_time string
)
partitioned BY(month string)
row format delimited fields terminated by '\t';

2、准备数据
cd /kkb/install/hivedatas
vim order.txt 
10001    100 2019-03-02
10002    200 2019-03-02
10003    300 2019-03-02
10004    400 2019-03-03
10005    500 2019-03-03
10006    600 2019-03-03
10007    700 2019-03-04
10008    800 2019-03-04
10009    900 2019-03-04

3、加载数据到分区表
load data local inpath '/kkb/install/hivedatas/order.txt' overwrite into table order_partition partition(month='2019-03');

4、查询结果数据    
select * from order_partition where month='2019-03';
结果为:
10001   100.0   2019-03-02      2019-03
10002   200.0   2019-03-02      2019-03
10003   300.0   2019-03-02      2019-03
10004   400.0   2019-03-03      2019-03
10005   500.0   2019-03-03      2019-03
10006   600.0   2019-03-03      2019-03
10007   700.0   2019-03-04      2019-03
10008   800.0   2019-03-04      2019-03
10009   900.0   2019-03-04      2019-03

Partición dinámica: importe automáticamente datos en diferentes particiones de la tabla según los requisitos, sin especificación manual.

Si necesita insertar datos de varias particiones a la vez, puede utilizar particiones dinámicas, en lugar de especificar el campo de partición, el sistema consulta automáticamente.

El número de particiones dinámicas es limitado, debe crearse a partir de una tabla existente.

首先必须说的是,动态分区表一定是在已经创建的表里来创建
1、创建普通标
create table t_order(
    order_number string,
    order_price  double, 
    order_time   string
)row format delimited fields terminated by '\t';

2、创建目标分区表
create table order_dynamic_partition(
    order_number string,
    order_price  double    
)partitioned BY(order_time string)
row format delimited fields terminated by '\t';

3、准备数据
cd /kkb/install/hivedatas
vim order_partition.txt
10001    100 2019-03-02 
10002    200 2019-03-02
10003    300 2019-03-02
10004    400 2019-03-03
10005    500 2019-03-03
10006    600 2019-03-03
10007    700 2019-03-04
10008    800 2019-03-04
10009    900 2019-03-04

4、动态加载数据到分区表中
要想进行动态分区,需要设置参数
开启动态分区功能
set hive.exec.dynamic.partition=true; 
设置hive为非严格模式
set hive.exec.dynamic.partition.mode=nonstrict; 
insert into table order_dynamic_partition partition(order_time) select order_number,order_price,order_time from t_order;

5、查看分区
show partitions order_dynamic_partition;

Inserte la descripción de la imagen aquí
Los ejemplos de partición estática y partición dinámica son casi los mismos, así que comprendamos.

Punto 17: sintaxis de consulta básica de Hive

Lao Liu dijo antes que la sintaxis de consulta básica de la colmena es muy importante. Mucha gente piensa que no es necesario memorizarla en absoluto. Solo mire las notas cuando lo necesite. Pero en opinión de Lao Liu, esta es una idea equivocada.

Hay un dicho que dice que la base no es sólida y que el suelo tiembla. Como mínimo, debemos dominar la sintaxis de consulta de uso común.

1. Consulta de sintaxis básica:

Inserte la descripción de la imagen aquí
Debido a que la declaración límite y la declaración where se usan mucho, sáquelas por separado, ¡así que recuerde!

limit 语句
select  * from score limit 5;

Luego viene la declaración where, que se saca por separado para mostrar que la declaración where es muy importante. Usamos la instrucción where para filtrar las filas que no cumplen las condiciones.

select  * from score where s_score > 60;

2. Oraciones grupales

agrupar por declaración

La instrucción group by se usa generalmente con funciones agregadas para agrupar los resultados de una o más columnas y luego realizar operaciones de agregación en cada grupo. Un punto importante a tener en cuenta es que el campo de selección debe seleccionarse después del grupo por campo, excepto para las funciones agregadas max, min, avg.

Da dos pequeños ejemplos:

(1)计算每个学生的平均分数
select s_id,avg(s_score) from score group by s_id;

(2)计算每个学生最高的分数
select s_id,max(s_score) from score group by s_id;

tener declaración

Permítanme hablar sobre la diferencia entre tener una declaración y dónde

① Dónde es consultar los datos para las columnas en la tabla; tener es para que las columnas en los resultados de la consulta seleccionen los datos.

② Las funciones de agrupación no se pueden escribir después de donde, y las funciones de agrupación se pueden utilizar después de tener.

③ Tener solo se usa para agrupar por agrupación de declaraciones de estadísticas.

Da dos pequeños ejemplos:

求每个学生的平均分数
select s_id,avg(s_score) from score group by s_id;

求每个学生平均分数大于60的人
select s_id,avg(s_score) as avgScore from score group by s_id having avgScore > 60;

3. La declaración de
Inserte la descripción de la imagen aquí
combinación Equivalent join

Las instrucciones SQL JOIN normales se admiten en hive, pero solo se admiten combinaciones equivalentes y no se admiten las combinaciones no equivalentes.

Al usar la combinación, puede alias de la tabla o no. La ventaja del alias es que puede simplificar las consultas y es conveniente.

根据学生和成绩表,查询学生姓名对应的成绩
select * from stu left join score on stu.id = score.s_id;

合并老师与课程表
select * from teacher t join course c on t.t_id = c.t_id;

Unir internamente

Cuando dos tablas son una combinación interna, solo cuando hay datos que coinciden con las condiciones de combinación en ambas tablas, los datos se conservarán y la combinación predeterminada es la combinación interna.

select * from teacher t inner join course c  on t.t_id = c.t_id;

Izquierda combinación externa

Al realizar una combinación externa izquierda, se devolverán todos los registros de la tabla a la izquierda de la combinación que cumplan con la cláusula where.

查询老师对应的课程
select * from teacher t left outer join course c  on t.t_id = c.t_id;

Unión exterior derecha

Al realizar una combinación externa derecha, se devolverán todos los registros de la tabla a la derecha de la combinación que cumplan con la cláusula where.

查询老师对应的课程
select * from teacher t right outer join course c  on t.t_id = c.t_id;

4. Ordenar

ordenar por pedido global

Cuando se usa order by para ordenar, asc significa orden ascendente, que es el predeterminado; desc significa orden descendente.

查询学生的成绩,并按照分数降序排列
select * from score  s order by s_score desc ;

2. resumen de la colmena

El punto de conocimiento de la colmena (2) casi se comparte. Esta parte está sesgada hacia la práctica y requiere buenas prácticas.
En opinión de Lao Liu, es necesario recordar los conceptos de tabla de depósito y partición estática y partición dinámica. El resto es la operación básica de consulta de la colmena. Debido a que hay demasiados comandos, Lao Liu solo compartió algunos comandos de uso común, declaraciones límite, donde se deben memorizar declaraciones, declaraciones de agrupación, declaraciones de unión, etc.
Por último, si sientes que hay algo mal o mal, puedes ponerte en contacto con la cuenta oficial: Lao Liu que trabaja duro para comunicarse. Espero ser útil para los estudiantes interesados ​​en el desarrollo de big data y espero recibir su orientación.

Si crees que la escritura es buena, ¡dale un pulgar hacia arriba a Lao Liu!

Supongo que te gusta

Origin blog.csdn.net/qq_36780184/article/details/111041263
Recomendado
Clasificación