Verwenden von S3 Select-Pushdown mit Presto zur Verbesserung der Leistung - 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.

Verwenden von S3 Select-Pushdown mit Presto zur Verbesserung der Leistung

Mit Amazon EMR Version 5.18.0 und höher können Sie S3 Select-Pushdown mit Presto auf Amazon EMR. verwenden. Diese Funktion ermöglicht Presto, Rechenarbeit der Projektionsoperationen (z. B. SELECT) und der Prädikatoperationen (z. B. WHERE) an Amazon S3. auszulagern. Auf diese Weise können Abfragen die aus Amazon S3 abgerufenen Daten auf die benötigten Daten beschränken, was die Leistung verbessern und reduzieren die Datenmenge 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 Entwicklerhandbuch für Amazon Simple Storage Service.

  • Ihre Netzwerkverbindung zwischen Amazon S3 und dem Amazon EMR-Cluster verfügt über eine gute Übertragungsgeschwindigkeit und verfügbare Bandbreite. Amazon S3 komprimiert keine HTTP-Antworten, so dass die Antwortgröße wahrscheinlich für komprimierte Eingabedateien 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.

  • Amazon S3Die -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 mit PrestoDB oder PrestoSQL

Um S3 Select-Pushdown für PrestoDB auf Amazon EMR zu aktivieren, verwenden Sie die Konfigurationsklassifizierung presto-connector-hive, um hive.s3select-pushdown.enabled auf true zu setzen, wie im folgenden Beispiel gezeigt. Weitere Informationen finden Sie unter Konfigurieren von Anwendungen. Der Wert „hive.s3select-pushdown.max-connections“ muss ebenfalls 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.

Für PrestoSQL auf EMR-Version 6.1.0 oder höher ersetzen Sie einfach presto-connector-hive im folgenden Beispiel durch prestosql-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. Alle Anfragen an Amazon S3, die Presto initiiert und nicht herabgestuft werden, — z. B. GET-Operationen — werden weiterhin durch den Wert von fs.s3.maxConnections geregelt.

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.