Überlegungen und Einschränkungen
Beachten Sie die folgenden Punkte, wenn Sie Benutzerdefinierte Funktionen (UDFs) in Athena verwenden.
-
Integrierte Athena Funktionen – Integrierte Funktionen in Athena sind so konzipiert, dass sie sehr leistungsfähig sind. Wir empfehlen, wenn möglich integrierte Funktionen anstelle von UDFs zu verwenden. Weitere Hinweise zu integrierten Funktionen finden Sie unter Funktionen in Amazon Athena.
-
Nur skalare UDFs – Athena unterstützt nur skalare UDFs, die jeweils eine Zeile verarbeiten und einen einzelnen Spaltenwert zurückgeben. Athena übergibt einen Batch von Zeilen, möglicherweise parallel, an die UDF, wenn Lambda aufgerufen wird. Bedenken Sie beim Entwerfen von UDFs und Abfragen die möglichen Auswirkungen dieser Verarbeitung auf den Netzwerkverkehr.
-
UDF-Handler-Funktionen verwenden ein abgekürztes Format — Verwenden Sie das abgekürzte Format (kein Vollformat) für Ihre UDF-Funktionen (z. B.
package.Classanstelle vonpackage.Class::method). -
UDF-Methoden müssen in Kleinbuchstaben sein — UDF-Methoden müssen in Kleinbuchstaben vorliegen; Kamelschreibung ist nicht zulässig.
-
UDF-Methoden benötigen Parameter – UDF-Methoden müssen mindestens einen Eingabeparameter haben. Der Versuch, eine ohne Eingabeparameter definierte UDF aufzurufen, führt zu einer Laufzeitausnahme. UDFs sollen Funktionen für Datensätze ausführen, aber eine UDF ohne Argumente nimmt keine Daten auf, sodass eine Ausnahme auftritt.
-
Java-Laufzeitunterstützung – Derzeit unterstützen Athena-UDFs die Java 8, Java 11 und Java 17 Laufzeiten für Lambda. Weitere Informationen finden Sie unter entwickeln von Lambda-Funktionen mit Java im AWS Lambda-Entwicklerhandbuch.
Anmerkung
Für Java 17 müssen Sie den Wert der
JAVA_TOOL_OPTIONS-Umgebungsvariable wie--add-opens=java.base/java.nio=ALL-UNNAMEDin Ihrem Lambda festlegen. -
IAM-Berechtigungen – Um UDF-Abfrageanweisungen in Athena auszuführen und zu erstellen, muss der IAM-Prinzipal, der die Abfrage ausführt, zusätzlich zu den Athena-Funktionen auch Aktionen ausführen dürfen. Weitere Informationen finden Sie unter Zugriff auf Athena-UDFs zulassen: Beispielrichtlinien.
-
Lambda-Kontingente – Lambda Kontingente gelten für UDFs. Weitere Informationen finden Sie unter Lambda quotas (Lambda-Kontingente) im AWS Lambda-Entwicklerhandbuch.
-
Filterung auf Zeilenebene – Die Filterung auf Zeilenebene von Lake Formation wird für UDFs nicht unterstützt.
-
Ansichten – Sie können keine Ansichten mit UDFs verwenden.
-
Bekannte Probleme – Die aktuelle Liste bekannter Probleme finden Sie unter Einschränkungen und Probleme
im Abschnitt awslabs/aws-athena-query-federation von GitHub.