Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Wie behebe ich den Fehler „FAILED: NullPointerException Name ist Null“, wenn ich eine Tabelle in Athena abfrage?
Wenn ich meine Amazon Athena-Tabelle abfrage, erhalte ich die Fehlermeldung „FAILED: NullPointerException Name is Null“.
Kurzbeschreibung
Die folgenden Fehlermeldungen sind Arten des Fehlers FEHLGESCHLAGEN: NullPointerException, die du möglicherweise erhältst.
NullPointerException Name ist Null
Dieser Fehler wird angezeigt, wenn das Attribut TableType für die abgefragte Tabelle im AWS-Glue-Datenkatalog nicht definiert ist. Das Attribut TableType definiert, ob es sich bei der Tabelle um eine externe Tabelle oder eine Ansicht handelt. Du kannst das Attribut mit Werten wie EXTERNAL_TABLE und VIRTUAL_VIEW definieren.
Wenn du DDL-Abfragen wie SHOW CREATE TABLE oder MSCK REPAIR TABLE ausführen möchtest, musst du das Attribut TableType definieren.
Möglicherweise wird dieser Fehler auch angezeigt, wenn du eine AWS CloudFormation-Vorlage oder die AWS Glue-API verwendest und die Eigenschaft TableType nicht angibst.
java.lang.NullPointerException: Cannot invoke "java.util.Map.entrySet()" because the return value of "org.apache.hadoop.hive.metastore.api.SerDeInfo.getParameters()" is null
Dieser Fehler wird angezeigt, wenn die Parameter SerDeInfo für die abgefragte Tabelle im Datenkatalog nicht definiert sind. Die Parameter SerDeInfo sind die Schlüssel-Wert-Paare, die Initialisierungsparameter für SerDe definieren. Du kannst das Attribut mit dem Wert „serialization.format“: „1“ definieren. Um DDL-Abfragen wie SHOW CREATE TABLE auszuführen, musst du die Attributparameter SerDeInfo definieren.
Möglicherweise wird dieser Fehler auch angezeigt, wenn du eine CloudFormation-Vorlage oder die AWS Glue-API verwendest und das Attribut SerDeInfo nicht angibst.
Lösung
Führe die Schritte zur Problembehandlung durch, die am besten zu der Fehlermeldung passen, die du erhalten hast.
**Hinweis:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, findest du weitere Informationen unter Troubleshoot AWS CLI errors. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.
NullPointerException Name ist null
Um diesen Fehler zu beheben, führe je nach Anwendungsfall eine oder mehrere der folgenden Aktionen aus.
Hinzufügen des Attributs bei der Tabellenerstellung
Wenn du die Tabelle erstellst, füge das Attribut TableType hinzu.
Hinweis: Wenn du eine DDL-Anweisung oder einen AWS Glue-Crawler verwendest, um die Tabelle zu erstellen, wird die Eigenschaft TableType automatisch definiert.
Aktualisieren der CloudFormation-Vorlage
Wenn du eine CloudFormation-Vorlage verwendest, um eine AWS Glue-Tabelle zu erstellen, gib das Attribut TableType in den Eigenschaften TableInput der AWS Glue-Tabellenressource an. Setze den TableType auf „EXTERNAL_TABLE“. Weitere Informationen findest du unter AWS::Glue::Table TableInput.
Aktualisieren des AWS Glue-API-Aufrufs
Wenn du den AWS Glue-API-Aufruf verwendest, um Tabellen zu erstellen oder zu aktualisieren, stelle sicher, dass du den Parameter TableType in die Eigenschaften TableInput aufnimmst. Wenn du die Operationen CreateTable oder UpdateTable aufrufst, setze den Parameter TableType auf „EXTERNAL_TABLE“.
Verwendung der AWS CLI, um die Tabelle zu aktualisieren
Um das Attribut TableType für die Tabelle zu aktualisieren, führe den AWS-CLI-Befehl update-table aus. Um diesen Befehl auszuführen, benötigst du das TableInput-Objekt, das die gesamte Tabellenarchitektur definiert.
Führe den AWS CLI-Befehl get-table aus, um das Objekt TableInput für die Tabelle abzurufen. Führe dann die folgenden Schritte aus, um die Ausgabe dieses Befehls zu aktualisieren:
-
Führe auf der Tabelle einen Befehl aus, der dem folgenden ähnelt:
aws glue get-table --catalog-id 1111222233334444 --database doc_example_database --name doc_example_table
Beispielausgabe:
{ "Table": { "StorageDescriptor": { "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "SortColumns": [], "InputFormat": "org.apache.hadoop.mapred.TextInputFormat", "SerdeInfo": { "SerializationLibrary": "org.apache.hadoop.hive.serde2.OpenCSVSerde", "Parameters": { "serialization.format": "1" } }, "Parameters": { "separatorChar": "," }, "Location": "s3://doc_example_bucket/doc_example_prefix/", "NumberOfBuckets": 0, "StoredAsSubDirectories": false, "Columns": [ { "Type": "int", "Name": "id" }, { "Type": "string", "Name": "name" } ], "Compressed": false }, "UpdateTime": 1620508098.0, "IsRegisteredWithLakeFormation": false, "Name": "doc_example_table", "CreatedBy": "arn:aws:iam::1111222233334444:user/Administrator", "DatabaseName": "doc_example_database", "Owner": "1111222233334444", "Retention": 0, "CreateTime": 1619909955.0, "Description": "tb description" } }
-
Entferne in der Ausgabe die Parameter UpdateTime, IsRegisteredWithLakeFormation, CreatedBy, DatabaseName und CreateTime. AWS Glue unterstützt diese Parameter nicht.
Falls du diese Parameter in das Attribut TableInput aufnimmst, wenn du den Befehl update-table ausführst, erhältst du möglicherweise die folgenden Fehler:„Parameter validation failed:Unknown parameter in TableInput: „UpdateTime“, must be one of: Name, Description, Owner, LastAccessTime, LastAnalyzedTime, Retention, StorageDescriptor, PartitionKeys, ViewOriginalText, ViewExpandedText, TableType, Parameters“
„Unknown parameter in TableInput: „sRegisteredWithLakeFormation“, must be one of: Name, Description, Owner, LastAccessTime, LastAnalyzedTime, Retention, StorageDescriptor, PartitionKeys, ViewOriginalText, ViewExpandedText, TableType, Parameters“
„Unknown parameter in TableInput: „CreatedBy“, must be one of: Name, Description, Owner, LastAccessTime, LastAnalyzedTime, Retention, StorageDescriptor, PartitionKeys, ViewOriginalText, ViewExpandedText, TableType, Parameters“
„Unknown parameter in TableInput: „DatabaseName“, must be one of: Name, Description, Owner, LastAccessTime, LastAnalyzedTime, Retention, StorageDescriptor, PartitionKeys, ViewOriginalText, ViewExpandedText, TableType, Parameters“
„Unknown parameter in TableInput: „CreateTime“, must be one of: Name, Description, Owner, LastAccessTime, LastAnalyzedTime, Retention, StorageDescriptor, PartitionKeys, ViewOriginalText, ViewExpandedText, TableType, Parameters“ -
Füge den Parameter „TableType“: „EXTERNAL_TABLE“ zur Ausgabe hinzu.
-
Verwende die Ausgabe als TableInput-Parameter, um den folgenden Befehl auszuführen:
aws glue update-table --catalog-id 1111222233334444 --database-name doc_example_database --table-input '{ "StorageDescriptor": { "OutputFormat": "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat", "SortColumns": [], "InputFormat": "org.apache.hadoop.mapred.TextInputFormat", "SerdeInfo": { "SerializationLibrary": "org.apache.hadoop.hive.serde2.OpenCSVSerde", "Parameters": { "serialization.format":"1" } }, "Parameters": { "separatorChar":"," }, "Location": "s3://doc_example_bucket/doc_example_prefix/", "NumberOfBuckets": 0, "StoredAsSubDirectories": false, "Columns": [ { "Type": "int", "Name": "id" }, { "Type": "string", "Name": "name" } ], "Compressed": false }, "Name": "doc_example_table", "TableType": "EXTERNAL_TABLE", "Owner": "1111222233334444", "Retention": 0, "Description": "tb description" }'
Hinweis: Ersetze die folgenden Variablen:
doc_example_database durch den Namen deiner Datenbank
doc_example_table durch den Namen deiner Tabelle
1111222233334444 durch deine AWS-Konto-ID
s3://doc_example_bucket/doc_example_prefix/ durch den Amazon Simple Storage Service (Amazon S3)-Speicherort, an dem du die Tabelle gespeichert hast
Nachdem du den vorherigen Befehl ausgeführt hast, wird der Parameter TableType aktualisiert, und die DDL-Abfragen sind erfolgreich.
java.lang.NullPointerException: Cannot invoke "java.util.Map.entrySet()" because the return value of "org.apache.hadoop.hive.metastore.api.SerDeInfo.getParameters()" is null
Um diesen Fehler zu beheben, führe je nach Anwendungsfall eine oder mehrere der folgenden Aktionen aus.
Hinzufügen der SerDeInfo-Parameter während der Tabellenerstellung
Wenn du die Tabelle erstellst, füge SerdeInfo-Parameter hinzu, z. B. "serialization.format": "1", "field.delim":",".
Aktualisieren der CloudFormation-Vorlage
Wenn du eine CloudFormation-Vorlage verwendest, um eine AWS Glue-Tabelle zu erstellen, gib die SerDeInfo-Parameter an. Navigiere im Abschnitt TableInput der Glue Table-Ressource zu StorageDescriptor. Wähle SerdeInfo und dann Parameter. Füge {"serialization.format": "1"} als Parameter hinzu.
Weitere Informationen findest du unter AWS::Glue::Table SerdeInfo.
Aktualisieren des AWS Glue-API-Aufrufs
Wenn du den AWS Glue-API-Aufruf verwendest, um Tabellen zu erstellen oder zu aktualisieren, füge die SerDeInfo-Parameter in den StorageDescriptor deines TableInput ein. Setze das Feld Parameter für SerDeInfo auf {"serialization.format": "1"}.
Dieser Parameter wird verwendet, wenn du Operationen wie CreateTable oder UpdateTable aufrufst. Weitere Informationen findest du unter StorageDescriptor-Struktur.
Verwendung der AWS Glue-Konsole, um die Tabelle zu aktualisieren
Gehe wie folgt vor, um die Eigenschaften der Tabelle im Datenkatalog zu aktualisieren:
- Öffne die AWS Glue-Konsole.
- Wähle im Navigationsbereich unter Datenkatalog die Option Tabellen aus.
- Wähle die Tabelle aus, die du aktualisieren möchtest.
- Wähle Aktion und dann Tabelle bearbeiten aus.
- Wähle im Abschnitt SerDe-Parameter die Option Hinzufügen aus.
- Gib für Schlüssel „serialization.format“ ein, und als Wert „1".
- Wähle Speichern aus.
Verwendung der AWS CLI, um die Tabelle zu aktualisieren
Um die SerDeInfo-Parameter für die Tabelle zu aktualisieren, führe den AWS-CLI-Befehl update-table aus. Um diesen Befehl auszuführen, benötigst du das TableInput-Objekt, das die gesamte Tabellenarchitektur definiert.
Führe den AWS CLI-Befehl get-table aus, um das Objekt TableInput für die Tabelle abzurufen. Aktualisiere dann die Ausgabe dieses Befehls, sodass sie die SerdeInfo-Parameter enthält.
Ähnliche Informationen

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren