Die in Hive eingefügten Daten sind alle leer (wenn die SQL korrekt ist).

(Autor: Chen Yujue Datenmaster )

Wenn die SQL korrekt ist, ist dieses Problem tatsächlich leicht zu lösen. Ein möglicher Grund ist, dass
der geschriebene Datentyp nicht mit dem Datentyp übereinstimmt, der beim Erstellen der Tabelle definiert wurde.

Ich bin schon einmal auf dieses Problem gestoßen, habe SQL viele Male überprüft und die Daten der oberen Tabelle viele Male überprüft, und es gab kein Problem. Zu diesem Zeitpunkt können Sie einige Daten auswählen, ohne sie in die Tabelle zu schreiben, sich die Ergebnisse direkt ansehen und feststellen, dass Ergebnisse vorhanden sind.

Überprüfen Sie die Tabellenerstellungsanweisung erneut und stellen Sie fest, dass die Tabellenerstellungsanweisung wie folgt lautet:

create table tmp.a
(id int
,name string
,class_one float
,class_two float
,class_three float
) partitioned by 
(type string)
stored as parquet

Beim Schreiben sind class_one und class_two jedoch tatsächlich Zeichenfolgentypen. Als sie definiert wurden, wurden sie falsch geschrieben und als Float-Typen geschrieben, aber beim Schreiben wurde kein Fehler gemeldet. Es sollte sein, dass das Schreiben nur in HDFS geschrieben wird und Anschließend werden die Metadateninformationen aktualisiert. Wenn Dateninformationen Dateien in HDFS lesen, können die entsprechenden Felder nicht analysiert werden, das Schreiben in das Dateisystem wird jedoch nicht behindert. Wenn es sich nicht um Hive handelt, melden andere Daten möglicherweise einen Fehler, wenn dieses Problem auftritt. Im Hive tritt dies jedoch nicht auf. Seien Sie daher bei diesem Problem vorsichtig.

Wenn kein Problem mit SQL vorliegt und das Ergebnis der Direktauswahl korrekt ist, liegt wahrscheinlich ein Datentypproblem vor. Solch einen Flüchtigkeitsfehler darf nur ich selbst begehen.

Guess you like

Origin blog.csdn.net/weixin_39750084/article/details/107516177