2014-12-20 23 views
5

Problem, który napotkałem kilka razy: Mam tabelę, table1, w db1. Mam table2 w db2. Jak mogę połączyć te dwa elementy?Jak połączyć dwie tabele, które znajdują się w różnych bazach danych, w Hive?

Oczywistą rzeczą do zrobienia jest coś takiego:

SELECT * 
FROM db1.table1 INNER JOIN db2.table2 
ON db1.table1.field1 = db2.table2.field2; 

Hive nie podoba się jednak; zaczyna traktować "table1" i "table2" tak, jakby były nazwami kolumn, a "db1" i "db2" jako nazwy tabel, i narzeka, gdy nie istnieją. Jak połączyć dwie tabele w różnych bazach danych?

Odpowiedz

10

Połączenie między tabelami w różnych bazach danych, w gałęzi, jednolicie wymaga ustawienia aliasu dla każdej pary {db, tabela}. Więc zamiast składni podanej w pytaniu, musisz użyć:

SELECT * 
FROM db1.table1 alias1 INNER JOIN db2.table2 alias2 
ON alias1.field1 = alias2.field2; 

To działa. Oczywiście, ważne jest, aby pamiętać, że jeśli pytasz o konkretne pola w instrukcji SELECT, mają tam również zastosowanie aliasy. Więc:

SELECT db1.table1.field1, db2.table2.field2 

staje:

SELECT alias1.field1, alias2.field2 
Powiązane problemy