semi - plataforma hive
¿Cómo unir dos tablas juntas que están en diferentes bases de datos, en Hive? (1)
Un problema que he encontrado varias veces: tengo una tabla, tabla1, en db1. Tengo table2 en db2. ¿Cómo me uno a los dos?
Lo más obvio es algo así como:
SELECT *
FROM db1.table1 INNER JOIN db2.table2
ON db1.table1.field1 = db2.table2.field2;
A Hive no le gusta esto, sin embargo; comienza a tratar "tabla1" y "tabla2" como si fueran nombres de columna, y "db1" y "db2" como nombres de tabla, y se quejan cuando no existen. ¿Cómo me uno a dos tablas en diferentes bases de datos?
Las uniones entre tablas en diferentes bases de datos, en Hive, requieren uniformemente establecer un alias para cada par de {db, table}. Entonces, en lugar de la sintaxis proporcionada en la pregunta, debes usar:
SELECT *
FROM db1.table1 alias1 INNER JOIN db2.table2 alias2
ON alias1.field1 = alias2.field2;
Esto funciona. Por supuesto, es importante recordar que si solicita campos específicos en la instrucción SELECT
, los alias también se aplican allí. Asi que:
SELECT db1.table1.field1, db2.table2.field2
se convierte en:
SELECT alias1.field1, alias2.field2