Versión de autoestudio de la entrevista de Hive

1. ¿Qué es la colmena?

Hive es una herramienta de almacenamiento de datos de código abierto de Facebook y basada en Hadoop, que puede asignar archivos de datos estructurados a una tabla y proporcionar funciones de consulta similares a SQL.
Hive es una herramienta de almacenamiento de datos basada en Hadoop que puede mapear archivos de datos estructurados en una tabla y convertir declaraciones H-SQL en programas MapReduce para ejecutarse en el clúster.

2. Describe el modelo arquitectónico de Hive.

respuesta 1

Cliente->Hive/HiveServer2->MetaStore->Hadoop->MapReduce
1. Primero, el cliente accede a Hive o HiveServer2
2. En segundo lugar, MetaStore registra metadatos relevantes accediendo a Hadoop
3. Los dos primeros pasos son preparativos después de iniciar la operación de conexión de Hive ,
ahora puede ver los datos y operarlos escribiendo declaraciones SQL.
4. El controlador encuentra la solución óptima generando un plan para llamar a YARN.
En este momento, accede a los metadatos HADOOP YARN.

Respuesta 2

Hive se compone aproximadamente de un módulo de servicio de Hive, un módulo de cliente de Hive, un módulo de almacenamiento de metadatos y un módulo de almacenamiento de datos reales. Por lo general, iniciar el cliente de Hive a través del comando de Hive requiere iniciar el servicio de metastore para garantizar el acceso a los metadatos, y los metadatos se almacenan en una base de datos relacional de terceros, como MySQL. Si queremos utilizar herramientas cliente de terceros para acceder de forma remota a los datos de Hive, debemos iniciar el servicio hiveserver2. A continuación, si se ejecuta una declaración de consulta, el cliente primero inicia una solicitud a Hive, y luego Hive utilizará su propio motor de controlador para analizar semánticamente la declaración de consulta para generar un plan de ejecución lógico, luego optimizarlo y luego convertirlo en un Programa MR., es el llamado plan de ejecución física. Finalmente, el plan de ejecución física MR se optimiza y finalmente el programa MR se envía al clúster Yarn para su ejecución de forma predeterminada. En este proceso, la interacción con el clúster Hadoop es logrado mediante operaciones de acceso a los metadatos. Los resultados finales de la consulta se devolverán a la ventana del cliente.

3. Explique brevemente la diferencia entre tablas internas y tablas externas en Hive, así como sus escenarios de uso.

1. Primero hablemos de las diferencias.

Tabla interna: al eliminar metadatos en Hive, los datos HDFS se eliminarán juntos.
Tabla externa: cuando se eliminan los metadatos, los datos HDFS no se eliminarán.

2. Escenarios de uso (principalmente según las características para ver si es necesario eliminar los datos)

Tabla interna: almacena datos temporales modificados, como la tabla de datos modificados del registro original
Tabla externa: almacena los datos más originales, como el registro original.

Respuesta 2

En Hive podemos crear dos tipos de tablas: tablas internas (Tabla administrada) y tablas externas (Tabla externa).
Cuando creamos una tabla interna, Hive administra completamente los datos y metadatos de la tabla. En otras palabras, Hive controla el ciclo de vida de los datos. Cuando eliminamos la tabla interna, Hive elimina tanto los metadatos como los datos almacenados en HDFS. Este tipo de tabla es adecuada para el almacenamiento de datos temporales y resultados intermedios.
Cuando creamos una tabla externa, Hive solo administra metadatos y el usuario debe controlar el ciclo de vida de los datos. Cuando eliminamos la tabla externa, Hive solo elimina los metadatos mientras los datos permanecen en HDFS. Este tipo de tabla es adecuada para el almacenamiento de datos compartidos y datos persistentes. Si tiene varias instancias de Hive u otras aplicaciones que necesitan acceder a los mismos datos, puede resultar útil utilizar tablas externas.
La elección de tablas internas o externas depende principalmente de los escenarios de uso y el ciclo de vida de los datos. Si sus datos son temporales y solo los usa Hive, puede elegir tablas internas; si sus datos son persistentes y deben ser compartidos por múltiples aplicaciones o instancias de Hive, debe elegir tablas externas.

4. Presente brevemente los servicios hiveserver2 y metastore en Hive

1.HiveServer2

HiveServer2 proporciona servicios de acceso remoto.
Los clientes acceden al clúster de Hadoop accediendo al middleware de HiveServer2.
HiveServer2 habilita la función de suplantación de usuario para que los usuarios de acceso de HiveServer2 sean consistentes con los usuarios de acceso de Hadoop, mejorando así la seguridad (aislamiento de permisos).

2.interfaz de acceso a metadatos de metastore

Proporciona interfaces de acceso a metadatos para Hive y HiveServer2. Se
divide en dos
tipos: integrado: Hive integrado, que solo puede proporcionar servicios para Hive y HiveServer2.
Servicio independiente: accede a la base de datos de metadatos accediendo a un MetaStore independiente, y los datos son almacenados en este Metastore.
Insertar descripción de la imagen aquí

Respuesta 2

En la arquitectura de Hive, HiveServer2 y Metastore son dos componentes muy importantes. Son respectivamente responsables de procesar las solicitudes de consulta de los clientes y almacenar metadatos de Hive.
HiveServer2 es una interfaz de servicio proporcionada por Hive, a través de la cual los usuarios pueden enviar consultas HQL y otros comandos a Hive. HiveServer2 admite autenticación y concurrencia multiusuario y funciona como un proxy dinámico para usuarios conectados y usuarios simulados. También proporciona interfaces para JDBC y ODBC, lo que permite que aplicaciones externas se conecten a Hive. Por ejemplo, puede consultar datos de Hive desde Python, Java, C++ y otras aplicaciones o algunas herramientas de visualización a través de HiveServer2.
Metastore es un servicio para que Hive acceda a metadatos. Los metadatos de Hive incluyen el nombre de la tabla, el nombre y tipo de columna, la partición de la tabla, la ubicación de almacenamiento de la tabla y otra información. Todas las operaciones de Hive, como la creación de tablas, la consulta de tablas y la modificación de tablas, requieren que los metadatos se obtengan o actualicen a través de Metastore. Metastore se puede implementar en el mismo proceso de HiveServer2 o se puede implementar como un servicio independiente para que lo compartan varias instancias de Hive.
En general, estos dos servicios son partes importantes de la arquitectura de Hive y garantizan la funcionalidad y el rendimiento de Hive. HiveServer2 proporciona a los usuarios una interfaz para acceder a Hive, mientras que Metastore proporciona a Hive funciones de gestión de metadatos.

5. Hablemos de los escenarios de clasificación en Hive y cómo se implementan.

1.ordenar mediante clasificación global, ordenar tablas grandes sin dividir
2.ordenar mediante clasificación local, ordenar dentro de regiones
3.distribuir Esta clasificación en realidad no es una clasificación, es una regla de partición de mapa, y el resto de las particiones se toma de acuerdo con la número de regiones según el hash

Respuesta 2

En Hive, podemos utilizar principalmente tres formas de ordenar: ordenar por, ordenar por y distribuir por. Estos tres métodos difieren en la clasificación de los resultados y el rendimiento.
ordenar por Este es el método de clasificación más simple, ordenará globalmente todos los datos de entrada. Cuando se ejecuta ordenar por, se generará un Reductor separado para ordenar, lo que significa que todos los datos deben enviarse a este Reductor y luego ordenarse en el Reductor. Este proceso consume mucho tiempo y recursos informáticos, por lo que ORDER BY es adecuado para ordenar conjuntos de datos pequeños, pero para ordenar conjuntos de datos grandes, el rendimiento puede ser deficiente.
ordenar por ordenará los datos de cada Reductor por separado y luego generará los resultados en el orden del Reductor. Debido a que ordenar por puede ordenar en múltiples reductores en paralelo, funciona mejor que ordenar por. Sin embargo, ordenar por no puede garantizar el resultado de la clasificación global, solo puede garantizar que los archivos generados por cada Reductor estén ordenados internamente y que los datos que ingresan a cada Reductor durante la ejecución de ordenar por sean aleatorios.
distribuir por no realiza la clasificación directamente, pero determina la distribución de datos en las tareas de MapReduce. distribuir por distribuirá datos a diferentes Reductores según las columnas especificadas, asegurando que los mismos valores clave se distribuirán al mismo Reductor. Por lo general, usaremos distribuir por junto con ordenar por para lograr un mejor efecto de clasificación.

6. 6. Describa brevemente cómo crear una tabla de particiones en Hive y cuáles son los beneficios de usar una tabla de particiones.

1. Cree una tabla de particiones: cree una tabla de particiones combinando la palabra clave partición por con los campos de partición relevantes
2. Los beneficios de la tabla de particiones:
Primero, aclaremos qué es la tabla de particiones. Una tabla particionada divide una tabla según un determinado campo, lo que en realidad no es diferente de la partición MapReduce. Divida una gran cantidad de datos en muchos datos pequeños.
Consultar y modificar se ha vuelto más conveniente y puede ubicarlo directamente según el campo de partición.

Respuesta 2

La tabla de particiones en Hive esencialmente administra los datos de la tabla en directorios en HDFS para mejorar la eficiencia de las consultas. La tabla de particiones debe especificarse al crear la tabla. La tabla particionada se crea combinando la palabra clave particionada por con el campo de partición. Las tablas particionadas pueden declarar tablas particionadas de varios niveles.
Los principales beneficios de las tablas particionadas se encuentran aproximadamente en tres aspectos: mejorar la eficiencia de las consultas, reducir los costos de almacenamiento y facilitar la gestión de datos.
Cuando consulta datos, si las condiciones de su consulta incluyen columnas de partición, Hive solo necesita leer los datos de las particiones que cumplen las condiciones, en lugar de leer los datos de toda la tabla. Esto puede mejorar enormemente la eficiencia de las consultas.
Puede configurar diferentes formatos de almacenamiento y algoritmos de compresión para diferentes particiones para reducir los costos de almacenamiento. Por ejemplo, para datos históricos, puede elegir una relación de compresión más alta para ahorrar espacio de almacenamiento.
La partición también le permite administrar sus datos más fácilmente. Por ejemplo, puede eliminar o archivar datos en una partición de forma independiente sin afectar a otras particiones.
Aunque las ventajas de particionar tablas son obvias, una partición excesiva puede aumentar los costos de administración de metadatos y afectar el rendimiento de las consultas. Por lo tanto, al diseñar particiones se deben tener en cuenta factores como el tamaño de la tabla, el modo de consulta y el ciclo de vida de los datos.

7. ¿Cuáles son las formas de cargar datos en una tabla de particiones?

Cabe distinguir aquí que existen dos tipos de tablas de particiones, una es la partición estática y la otra es la partición dinámica.

  • El objetivo principal de la partición dinámica es optimizar una tabla grande en muchas tablas pequeñas. Preste atención a la premisa: en este momento, la tabla grande ya existe y solo necesita descomponerse. Entonces, cargar significa insertar todos los datos de la tabla en la tabla de particiones.
  • La partición estática, debido a que es la tabla cuando se crea, puede provenir de carga o inserción.

Respuesta 2

En Hive, hay dos escenarios principales para cargar datos y crear particiones, a saber, partición estática y partición dinámica. Para
escenarios de carga de datos de partición estática, puede usar cargar o insertar, pero debe prestar atención a los campos de partición al cargar datos. También se deben asignar valores.Asignar valores a los campos de partición es en realidad el proceso de creación de particiones. Este proceso requiere la asignación manual de valores.
Para escenarios de carga de datos de partición dinámica, puede insertar datos en la tabla de particiones y crear particiones automáticamente en función de resultados de consultas específicos. Cabe señalar que este escenario requiere que el campo de partición provenga de la tabla que se está consultando y que los datos de toda la tabla de partición también provengan de la tabla que se está consultando.

8. ¿A qué cuestiones se debe prestar atención al utilizar tablas de particiones? ¿Cuantas más particiones definamos, mejor?

Hay varias consideraciones importantes al utilizar tablas de particiones de Hive:

Número de particiones: aunque más particiones pueden mejorar la eficiencia de las consultas, una partición excesiva puede aumentar el costo de la administración de metadatos y afectar el rendimiento de las consultas. Los metadatos de Hive se almacenan en el almacén de metadatos. Si hay demasiadas particiones, el almacén de metadatos puede sobrecargarse y provocar un cuello de botella en el rendimiento. En términos generales, es mejor no tener más de decenas de miles de particiones en una tabla.

Sesgo de datos: si la selección de claves de partición no es razonable, puede provocar un sesgo de datos, es decir, la cantidad de datos en algunas particiones es mucho mayor que la de otras particiones. La distorsión de los datos puede afectar gravemente al rendimiento de las consultas y a la utilización de los recursos. Por lo tanto, debe elegir una clave que pueda distribuir los datos de manera uniforme como clave de partición.

Mantenimiento de particiones: a medida que pasa el tiempo, es posible que se agreguen nuevas particiones y que se eliminen las antiguas. Debe asegurarse de tener suficientes recursos y políticas para administrar estas particiones, como archivar periódicamente o eliminar particiones antiguas para liberar espacio de almacenamiento.

En general, la partición es una herramienta poderosa que puede mejorar en gran medida la eficiencia de las consultas y la conveniencia de la administración de datos. Sin embargo, también debe elegir cuidadosamente la clave y el número de partición para evitar sesgos de datos y problemas de partición excesiva. Al mismo tiempo, también es necesario disponer de recursos y estrategias suficientes para gestionar y mantener particiones.

9. ¿Cómo crear una tabla de depósitos en Hive y en qué circunstancias se utilizará la tabla de depósitos?

En Hive, puede crear tablas que se dividen en "depósitos", a los que llamamos tablas de depósitos. Al igual que las tablas particionadas, las tablas en depósitos son otra estrategia de separación de datos detallada. La cantidad de depósitos se define cuando se crea la tabla y no cambia a medida que crecen los datos.
La sintaxis para crear una tabla de depósitos es la siguiente:
CREATE TABLE nombre_tabla (columna1 tipo1, columna2 tipo2,...)
CLUSTERED BY (nombre_columna) EN num_buckets BUCKETS;
por ejemplo, si tiene una tabla de pedidos, puede agruparla según el orden. id. La declaración de creación es la siguiente:
CREAR TABLA de pedidos (order_id INT, product_id INT, precio FLOAT)
AGRUPADOS POR (order_id) EN 64 BUCKETS;
en este ejemplo, todos los pedidos se dividen en 64 depósitos según el valor de la columna order_id . Cada depósito corresponde a un archivo HDFS y los pedidos con el mismo valor de order_id se colocarán en el mismo depósito.

Entonces, ¿bajo qué circunstancias se utilizaría una mesa tipo cubo?

Problema de sesgo de datos: el sesgo de datos es un problema común en el procesamiento de big data. El sesgo de datos significa que el volumen de datos de algunos valores clave es mucho mayor que el de otros valores clave, lo que puede provocar una utilización desigual de los recursos. Al agrupar, podemos distribuir los datos de manera más uniforme en diferentes depósitos, mitigando así el problema de la distorsión de los datos.

Optimice tipos específicos de consultas: por ejemplo, para operaciones de unión, si ambas tablas están agrupadas de acuerdo con la columna de unión y el número de depósitos es el mismo, Hive puede realizar uniones en cada depósito por separado, procesando así varios depósitos en paralelo. eficiencia de la consulta.

Consulta de muestreo: Hive proporciona un mecanismo de muestreo basado en depósitos que solo puede leer datos de uno o más depósitos. Esto es útil para una exploración o depuración rápida en grandes conjuntos de datos.

Sin embargo, cabe señalar que el uso de cubetas requiere un diseño y una gestión más sofisticados y no es adecuado para todas las situaciones. Además, el agrupamiento no puede reemplazar la partición, que tiene sus propias ventajas en la gestión de datos y la optimización de consultas, y generalmente se usan juntos.

10 La diferencia entre cubos y particiones

Lo que se puede controlar mediante el agrupamiento es solo el número de depósitos y las columnas según ellos, mientras que las reglas de asignación las determina Map.La partición es
más detallada y no especifica el número.
Bucket Join admite MapJoin de tablas grandes, pero la partición no.

11. Enumere las funciones de una sola línea más utilizadas

subcadena de piso de techo
de rand redondo fecha_actual fecha fechadadifícil fecha_add




12. Describa la idea de implementar fila a columna y columna a fila en Hive, y qué funciones se utilizan generalmente para lograr los dos requisitos anteriores.

Fila a columna: Collect_Set/collect_list

De columna a fila: explotar

De fila a columna: en Hive, de fila a columna generalmente se utilizan funciones agregadas, como Collect_set o Collect_list. Estas funciones agregan múltiples valores de fila para una columna específica en un conjunto o lista. Por ejemplo, si tiene una tabla que contiene ID de usuario y los artículos que compraron, puede agregar todos los artículos comprados por cada usuario en una lista usando una consulta como esta: SELECT user_id, Collect_list(product) as product_list FROM shoppingGROUP BY user_id
;
Esto Se generará una nueva tabla, en la que cada fila corresponde a un ID de usuario, y la columna de producto contiene una lista de todos los productos comprados por el usuario, realizando así la conversión de filas a columnas.

De columna a fila: en Hive, de columna a fila generalmente se usa la función de explosión. Cuando tiene una columna de datos de tipo matriz o mapa, puede usar la función de explosión para expandirla en varias filas. Por ejemplo, si tiene una tabla que contiene ID de usuario y una lista de productos que compraron, puede expandir la lista de productos en varias filas usando una consulta como esta: SELECCIONAR ID_usuario, explotar(lista_productos) como productoDE compras; esto
crearía
una consulta para cada usuario y cada producto Generar una fila, es decir, expandir la lista de productos en varias filas, realizando la conversión de columnas a filas. Sin embargo, si desea corresponder a los datos de la tabla original después de convertir las columnas en filas, debe combinar la vista lateral para completar la creación de perfiles.

13. ¿Cómo entiendes la función de ventanas? Resume la esencia de las ventanas.

Observe la ventana que se abre, primero observe la diferencia entre el grupo de funciones agregadas por

Función de agregación: agrupar por cambia el contenido de la tabla modificando la estructura de la tabla.
Función de ventana: a través de partición por orden, etc., no es necesario modificar la estructura de la tabla para calcular los datos en una ventana específica. En otras palabras, El sistema de ventanas es una versión mejorada de la agregación.
La operación de agregación se realiza directamente en la tabla original sin modificar la estructura de la tabla, y cada fila puede obtener un resultado, obteniendo así el resultado agregado.

  • 1. La agregación de estructura de tabla modifica directamente la estructura de la tabla para lograr la agregación (1 a muchos). La ventana no modifica la estructura de la tabla y opera directamente sobre la base de la tabla original.
  • 2. Una vez agregados los resultados, las columnas que no participan en la agrupación solo pueden representarse mediante la función agregada y la partición en ventana por y

Las funciones de ventana son parte de SQL que se utiliza para manejar tareas de análisis de datos que son más complejas que las consultas agregadas ordinarias. Cuando la función de ventana realiza cálculos, definirá una "ventana" para cada línea de entrada. El conjunto de líneas en esta ventana es la base para el cálculo de la función de esta línea.
La ejecución de una función de ventana se puede dividir en tres pasos:
Partición: Primero, todas las filas se dividirán de acuerdo con la cláusula PARTITION BY, y las filas con el mismo valor de expresión PARTITION BY pertenecen a la misma partición.

Clasificación: las filas de cada partición se ordenan según la cláusula ORDER BY.

Definición de ventana: Finalmente, para cada fila se define una ventana dentro de la partición en la que se encuentra. Esta ventana está definida por la cláusula ROWS o RANGE, y las filas de esta ventana son la base para el cálculo de la función de ventana para esta fila.

El poder de las funciones de ventana es que, aunque realizan operaciones de agregación (como sumar, contar, encontrar valores máximos/mínimos, etc.), no agregan varias filas en una sola como las funciones agregadas ordinarias, sino que devuelven un resultado para cada línea ingresada. De esta manera, se puede realizar un análisis agregado conservando información detallada.
Por ejemplo, podría utilizar una función de ventana para calcular el total de compras de cada usuario y compararlo con los totales de compras de otros usuarios para encontrar el usuario que realizó la mayor cantidad de compras. En este ejemplo, la ventana para cada fila (es decir, cada usuario) se compone de todas las compras realizadas por ese usuario, y la función de ventana es la función de suma utilizada para calcular el número total de compras dentro de la ventana.
En general, la esencia de la función de ventanas es definir una "ventana" (es decir, un grupo de filas asociadas) para cada fila, luego realizar cálculos agregados en esta ventana y devolver un resultado para cada fila. Análisis de datos más complejos .

Supongo que te gusta

Origin blog.csdn.net/qq_42265608/article/details/132458869
Recomendado
Clasificación