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
Wichtig
Amazon S3 Select ist für Neukunden nicht mehr verfügbar. Bestandskunden von Amazon S3 Select können das Feature weiterhin wie gewohnt nutzen. Weitere Informationen
Mit Amazon-EMR-Version 5.18.0 und höher können Sie S3 Select
S3 Select wird mit Hive-Tabellen auf der Grundlage von CSV- und JSON-Dateien und durch die Einstellung der Konfigurationsvariablen s3select.filter
auf true
während der Hive-Sitzung unterstützt. 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 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
-
Die Amazon-S3-serverseitige Verschlüsselung mit vom Kunden bereitgestellten Verschlüsselungsschlüsseln (SSE-C) und die clientseitige Verschlüsselung werden nicht unterstützt.
-
Die Eigenschaft
AllowQuotedRecordDelimiters
wird nicht unterstützt. Wenn diese Eigenschaft angegeben ist, schlägt die Abfrage fehl. -
Nur CSV- und JSON-Dateien im UTF-8-Format werden unterstützt. 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 auf 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 CSV- und JSON-Dateien erstellen und anschließend die Tabelle mit einer einfachen Select-Anweisung abfragen.
Beispiel CREATE-TABLE-Anweisung für 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 CREATE-TABLE-Anweisung für 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 SELECT-TABLE-Anweisung
SET s3select.filter=true;
SELECT * FROM mys3selecttable WHERE col2 > 10;