tipo semi plataforma lenguaje left datos caracteristicas arquitectura hive

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