Verwendung von S3 Select mit Hive 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.

Verwendung von S3 Select mit Hive zur Verbesserung der Leistung

Mit der EMR Amazon-Release-Version 5.18.0 und höher können Sie S3 Select mit Hive auf Amazon verwenden. EMR S3 Select ermöglicht es Anwendungen, nur eine Teilmenge von Daten aus einem Objekt abzurufen. Für Amazon EMR wird die Rechenarbeit beim Filtern großer Datensätze für die Verarbeitung vom Cluster auf Amazon S3 „heruntergeschoben“, wodurch die Leistung einiger Anwendungen verbessert und die zwischen Amazon EMR und Amazon S3 übertragene Datenmenge reduziert werden kann.

S3 Select wird mit Hive-Tabellen unterstützt, die auf CSV und JSON -Dateien basieren, und indem Sie die s3select.filter Konfigurationsvariable true während Ihrer Hive-Sitzung auf setzen. Weitere Informationen und Beispiele finden Sie unter Angeben von S3 Select in Ihrem Code.

Ist S3 Select das Richtige für meine Anwendung?

Wir empfehlen, dass Sie Benchmark-Tests für Ihre Anwendungen im Vergleich mit und ohne S3 Select 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 Amazon S3 Select unterstützt wird. Weitere Informationen finden Sie unter Datentypen im Benutzerhandbuch für Amazon Simple Storage Service.

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

Überlegungen und Einschränkungen

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

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

  • Es werden nur JSON Dateien im CSV -8-Format unterstütztUTF. Mehrzeilig CSVs und JSON werden nicht unterstützt.

  • Nur unkomprimierte oder gzip- oder bzip2-Dateien werden unterstützt.

  • Kommentarzeichen auf der letzten Zeile werden nicht unterstützt.

  • Leere Zeilen am Ende einer Datei werden nicht verarbeitet.

  • Hive on Amazon EMR unterstützt die primitiven Datentypen, die S3 Select unterstützt. Weitere Informationen finden Sie unter Datentypen im Benutzerhandbuch für Amazon Simple Storage Service.

Angeben von S3 Select in Ihrem Code

Um S3 Select in Ihrer Hive-Tabelle zu verwenden, erstellen Sie die Tabelle durch Angabe von com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat als INPUTFORMAT-Klassenname, und geben Sie einen Wert für die Eigenschaft s3select.format mit der TBLPROPERTIES-Klausel an.

S3 Select ist standardmäßig deaktiviert, wenn Sie Abfragen ausführen. Aktivieren Sie S3 Select, indem Sie s3select.filter auf true in Ihrer Hive-Sitzung setzen, wie unten gezeigt. Die folgenden Beispiele zeigen, wie Sie S3 Select angeben, wenn Sie eine Tabelle aus JSON Basisdateien erstellen CSV und die Tabelle anschließend mit einer einfachen Select-Anweisung abfragen.

Beispiel CREATETABLEAnweisung für eine CSV basierte Tabelle
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/mycsvfile/' TBLPROPERTIES ( "s3select.format" = "csv", "s3select.headerInfo" = "ignore" );
Beispiel CREATETABLEAussage für eine JSON basierte Tabelle
CREATE TABLE mys3selecttable ( col1 string, col2 int, col3 boolean ) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS INPUTFORMAT 'com.amazonaws.emr.s3select.hive.S3SelectableTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://path/to/json/' TBLPROPERTIES ( "s3select.format" = "json" );
Beispiel SELECTTABLEAussage
SET s3select.filter=true; SELECT * FROM mys3selecttable WHERE col2 > 10;