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-SelectSELECT
) 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
ausreichen. Weitere Informationen hierzu finden Sie unter Verstehen und Optimieren von „hive.s3select-pushdown.max-connections“ weiter unten.500
Ersetzen Sie für PrestoSQL auf den EMR-Versionen 6.1.0 bis 6.3.0 im folgenden Beispiel
durch presto-connector-hive
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
durch presto-connector-hive
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
.