2017-05-02 5 views
1

Ich habe eine test Tabelle in Bienenstock mit unten Schema. Ich möchte alle Ids auswählen, wo a und b gleich sind, wie geht das?
Gibt es in der Hive eine eingebaute Funktion, die den Map-Datentyp-Vergleich unterstützt?Wie zu vergleichen, komplexe Datentyp Spalten im Bienenstock

Tabelle DDL:

CREATE TABLE test(id string, 
a map<int,string>, 
b map<int,string>) 

Die unten sql wirft Fehler, da nur dann gleich Operator Urtyp unterstützt:

select id from test where a=b; 

Argumenttyp Mismatch 'a': Das erste Argument von EQUAL wird erwartet, ein primitiver Typ, aber Karte ist

gefunden

Hinweis: Ich bin in der Lage, dies mit meiner eigenen UDF zu erreichen, aber ich suche, ob Bienenstock jede integrierte Funktion zur Unterstützung solcher Operationen bietet?

Antwort

2
select id from test where a in (b); 
+0

Danke, es hat funktioniert. Könntest du bitte erklären, wie Bienenstock 'a in (b)' intern übersetzt? –

+1

Ich bekomme die Frage nicht. Dies ist grundsätzlich nicht anders als "x in (1,2,3)' –

+0

Ich habe es. Vielen Dank –