S3-Select-Pushdown mit Presto zur Verbesserung der Leistung verwenden - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

S3-Select-Pushdown mit Presto zur Verbesserung der Leistung verwenden

Mit Amazon EMR Version 5.18.0 und höher können Sie S3-Select-Pushdown mit Presto in Amazon EMR verwenden. Dieses Feature ermöglicht Pesto Rechenarbeit der Projektionsoperationen (z. B. SELECT) und der Prädikatoperationen (z. B. WHERE) in Amazon S3 herunter zu schieben („Pushdown“). Auf diese Weise können Abfragen die aus Amazon S3 abgerufenen Daten auf die benötigten Daten beschränken, was die Leistung verbessern und die Datenmenge reduzieren kann, die in bestimmten Anwendungen zwischen Amazon EMR und Amazon S3 übertragen wird.

Ist S3-Select-Pushdown das Richtige für meine Anwendung?

Wir empfehlen, dass Sie Benchmark-Tests für Ihre Anwendungen im Vergleich mit und ohne S3 Select-Pushdown durchführen, um zu sehen, ob es für Ihre Anwendung geeignet sein könnte.

Verwenden Sie die folgenden Richtlinien, um zu bestimmen, ob Ihre Anwendung ein Kandidat für die Verwendung von S3 ist:

  • Ihre Abfrage filtert mehr als die Hälfte des ursprünglichen Datensatzes.

  • Ihre Abfrage-Filterprädikate verwenden Spalten mit einem Datentyp, der von Presto und S3 Select unterstützt wird. Die Datentypen timestamp, real und double werden von S3 Select-Pushdown nicht unterstützt. Wir empfehlen für numerische Daten die Verwendung des Datentyps decimal. Weitere Informationen zu unterstützten Datentypen für S3 Select finden Sie unter Datentypen im Benutzerhandbuch für Amazon Simple Storage Service.

  • Ihre Netzwerkverbindung zwischen Amazon S3 und dem Amazon-EMR-Cluster hat eine gute Übertragungsgeschwindigkeit und verfügbare Bandbreite. Amazon S3 komprimiert keine HTTP-Antworten, sodass die Antwortgröße bei komprimierten Eingabedateien wahrscheinlich zunimmt.

Überlegungen und Einschränkungen

  • Es werden nur im CSV-Format gespeicherte Objekte unterstützt. Objekte können optional mit gzip oder bzip2 komprimiert bzw. dekomprimiert werden.

  • Die Eigenschaft AllowQuotedRecordDelimiters wird nicht unterstützt. Wenn diese Eigenschaft angegeben ist, schlägt die Abfrage fehl.

  • Die Amazon-S3-serverseitige Verschlüsselung mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln (SSE-C) und die clientseitige Verschlüsselung werden nicht unterstützt.

  • S3 Select-Pushdown ist kein Ersatz für die Verwendung von spaltenbasierten oder komprimierten Dateiformaten wie z. B. ORC oder Parquet.

Aktivieren von S3-Select-Pushdown für Presto oder Trino

Um S3-Select-Pushdown für Presto auf Amazon EMR zu aktivieren, verwenden Sie die presto-connector-hive-Konfigurationsklassifizierung, um hive.s3select-pushdown.enabled auf true zu setzen, wie im nachfolgenden Beispiel gezeigt. Weitere Informationen finden Sie unter Anwendungen konfigurieren. Außerdem muss der Wert für „hive.s3select-pushdown.max-connections“ festgelegt werden. Für die meisten Anwendungen sollte die Standardeinstellung 500 ausreichen. Weitere Informationen hierzu finden Sie unter Verstehen und Optimieren von „hive.s3select-pushdown.max-connections“ weiter unten.

Ersetzen Sie für PrestoSQL auf den EMR-Versionen 6.1.0 bis 6.3.0 im folgenden Beispiel presto-connector-hive durch prestosql-connector-hive.

Amazon-EMR-Versionen 6.4.0 und höher verwenden den neuen Namen Trino anstelle von PrestoSQL. Wenn Sie Trino verwenden, ersetzen Sie im Beispiel unten presto-connector-hive durch trino-connector-hive

[ { "classification": "presto-connector-hive", "properties": { "hive.s3select-pushdown.enabled": "true", "hive.s3select-pushdown.max-connections": "500" } } ]

Verstehen und Optimieren von „hive.s3select-pushdown.max-connections“

Standardmäßig verwendet Presto EMRFS als Dateisystem. Die Einstellung fs.s3.maxConnections in der emrfs-site-Konfigurationsklassifizierung gibt die maximal zulässige Anzahl an Clientverbindungen zu Amazon S3 über EMRFS für Presto an. Standardmäßig ist dies 500. S3-Select-Pushdown umgeht beim Zugriff auf Amazon S3 für Prädikatoperationen EMRFS. In diesem Fall gibt der Wert von hive.s3select-pushdown.max-connections die maximale Anzahl von Clientverbindungen an, die für diese Operationen von Worker-Knoten aus zulässig ist. Für alle Anfragen an Amazon S3, die Presto initiiert und die nicht nach unten verschoben werden (z. B. GET-Operationen), gilt jedoch weiterhin der Wert von fs.s3.maxConnections.

Wenn Ihre Anwendung den Fehler „Timeout waiting for connection from pool (Timeout beim Warten auf eine Verbindung aus dem Pool)“ erhält, erhöhen Sie den Wert von hive.s3select-pushdown.max-connections und von fs.s3.maxConnections.