Umgang mit NULL-Werten in Hive

9

Ich versuche, eine Tabelle (Tabelle 2) in Hive aus einer anderen Tabelle (Tabelle 1) zu erstellen. Ich versuche, bestimmte Zeilen mit NULL-Werten auszuschließen und habe die folgende Bedingung versucht.

%Vor%

Wenn ich jedoch diese folgende Abfrage mit der neuen Tabelle versuche, bekomme ich 300+ Zeilen mit NULL-Werten:

%Vor%

Könnte jemand auf das hinweisen, was diese NULL-Werte verursacht?

Danke.

Ravi

    
Ravi 25.08.2013, 19:38
quelle

5 Antworten

18

Erstens - ich denke nicht, dass column1 is not NULL or column1 <> '' sehr sinnvoll ist. Vielleicht wollten Sie column1 is not NULL and column1 <> '' ( AND anstelle von OR ) schreiben?

Zweitens - wegen des Ansatzes "Schema on read" von Hive für Tabellendefinitionen werden ungültige Werte in NULL konvertiert, wenn Sie von ihnen lesen. Wenn zum Beispiel table1.column1 vom Typ STRING und table2.column1 vom Typ INT ist, dann denke ich nicht, dass table1.column1 IS NOT NULL genug ist, um table2.column1 IS NOT NULL zu garantieren. (Ich bin mir aber nicht sicher.)

    
ruakh 25.08.2013, 19:53
quelle
4

Versuchen Sie, Länge & gt; 0 auch.

%Vor%     
ShikharDua 30.09.2014 20:37
quelle
2

Was ist der Datentyp für Spalte1 in Ihrer Hive-Tabelle? Bitte beachten Sie, dass, wenn Ihre Spalte STRING ist, sie keinen NULL-Wert haben wird, obwohl Ihre externe Datei keine Daten für diese Spalte enthält.

    
Jickson T George 27.08.2013 06:54
quelle
0

Um nach den NULL Daten für spalte1 zu suchen und Ihren Datentyp als String zu betrachten, können Sie den folgenden Befehl verwenden:

%Vor%     
Indrajeet Gour 31.03.2017 11:55
quelle
0

Versuchen Sie es mit isnull (a), isnotnull (a), nvl () usw. Bei einigen Versionen (möglicherweise in Verbindung mit den Servereinstellungen - zumindest mit der, an der ich gerade arbeite) der 'IS NULL' und Die Syntax 'IS NOT NULL' führt die Logik beim Kompilieren nicht aus. Weitere Informationen finden Sie hier .

    
LxsScarredCrest 17.10.2017 17:51
quelle

Tags und Links