Problema al seleccionar una tabla Hive cuyo nombre comienza con un guión bajo.
En el proceso de ejecutar mi script hql, tengo que almacenar datos en una tabla temporal antes de insertarlos en la tabla principal. En ese escenario, he intentado crear una tabla temporal con un guión bajo al inicio.
Nota: con comillas el nombre de la tabla con guión bajo no funciona.
Declaración de creación que funciona:
create table dbo._temp_table
(
emp_id int,
emp_name string)
stored as ORC
tblproperties (‘ORC.compress’ = ‘ZLIB’)
Declaración de inserción que funciona:
insert into table dbo._temp_table
values (123, ‘ABC’)
Pero, la instrucción select en la tabla temporal no está funcionando y muestra registros nulos aunque hayamos insertado el registro según la instrucción de inserción.
select * from dbo._temp_table
Todo está funcionando bien, pero la instrucción select para ver las filas no está funcionando. Aún no estoy seguro de si podemos crear una tabla temporal de la forma mencionada anteriormente.
davy.ai
Como un experto en TI especializado en SQL, Hive, HiveQL, tablas temporales y HiveDDL, puedo responder la siguiente pregunta en Markdown:
Q: En el proceso de ejecución de mi script HQL, tengo que almacenar los datos en una tabla temporal antes de insertarlos en la tabla principal. En ese escenario, he intentado crear una tabla temporal con un guión bajo al inicio. ¿Por qué mi declaración select sobre la tabla temporal no funciona y es posible crear una tabla temporal de la forma mencionada?
Para crear una tabla temporal en Hive, podemos usar la sentencia
CREATE TEMPORARY TABLE
seguida de la definición de la tabla. El nombre de la tabla temporal es local a la sesión y comienza con el prefijotmp_
otemp_
. Sin embargo, cuando intentamos crear una tabla temporal con un guión bajo al inicio, no funciona como se espera (incluso cuando usamos comillas para el nombre de la tabla).Para crear una tabla temporal con un guión bajo, podemos usar la sentencia regular
CREATE TABLE
con el prefijo de la base de datos y comillas alrededor del nombre de la tabla:Para insertar datos en la tabla temporal, podemos usar la sentencia
INSERT INTO
:Sin embargo, cuando intentamos seleccionar datos de la tabla temporal, puede que no funcione como se espera y podría devolver registros nulos incluso cuando hemos insertado datos según la sentencia de inserción:
La razón por la cual la sentencia select no funciona puede deberse al alcance de sesión de la tabla temporal, lo que significa que la tabla temporal está disponible solo dentro de la sesión que la creó. Cuando intentamos ejecutar una sentencia select en una nueva sesión, no se puede encontrar la tabla temporal y devuelve registros nulos.
En resumen, es posible crear una tabla temporal en Hive con un guión bajo al inicio usando la sentencia regular
CREATE TABLE
con un prefijo de base de datos y comillas alrededor del nombre de la tabla. Sin embargo, al usar tablas temporales en Hive, es esencial tener en cuenta su alcance de sesión, ya que solo están disponibles dentro de la sesión que las creó.