Verwenden des ORC-Formats in AWS-Glue - AWS Glue

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 des ORC-Formats in AWS-Glue

AWS-Glue ruft Daten aus Quellen ab und schreibt Daten an Ziele, die in verschiedenen Datenformaten gespeichert und transportiert werden. Wenn Ihre Daten im ORC-Datenformat gespeichert oder transportiert werden, stellt Ihnen dieses Dokument die verfügbaren Funktionen zur Verwendung Ihrer Daten in AWS-Glue vor.

AWS-Glue unterstützt die Verwendung des ORC-Formats. Dieses Format ist ein leistungsorientiertes, spaltenbasiertes Datenformat. Eine Einführung in das Format durch die Standardautorität finden Sie unter Apache Orc.

Sie können AWS-Glue verwenden, um ORC-Dateien aus Amazon S3 und aus Streaming-Quellen zu lesen und um ORC-Dateien in Amazon S3 zu schreiben. Sie können bzip- und gzip-Archive mit ORC-Dateien aus S3 lesen und schreiben. Sie konfigurieren das Komprimierungsverhalten auf S3-Verbindungsparameter statt in der auf dieser Seite besprochenen Konfiguration.

Die folgende Tabelle zeigt, welche gängigen AWS-Glue-Operationen die Option ORC-Format unterstützen.

Lesen Write (Schreiben) Streaming gelesen Gruppieren von kleinen Dateien Auftrags-Lesezeichen
Unterstützt Unterstützt Unterstützt Nicht unterstützt Unterstützt*

*Unterstützt in AWS-Glue-Version 1.0+

Beispiel: Lesen von ORC-Dateien oder Ordnern aus S3

Voraussetzungen: Sie benötigen die S3-Pfade (s3path) zu den ORC-Dateien oder -Ordnern, die Sie lesen möchten.

Konfiguration: Geben Sie in Ihren Funktionsoptionen format="orc" an. Verwenden Sie in Ihrem connection_options den paths-Schlüssel, um Ihren s3path anzugeben. Sie können konfigurieren, wie der Reader mit S3 in der connection_options interagiert. Einzelheiten finden Sie unter Verbindungstypen und Optionen für ETL in AWS Glue: Referenz zur Amazon-S3-Verbindungsoption.

Das folgende AWS-Glue-ETL-Skript zeigt den Prozess des Lesens von ORC-Dateien oder -Ordnern aus S3:

Python

Verwenden Sie für dieses Beispiel die Methode create_dynamic_frame.from_options.

from pyspark.context import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="s3", connection_options={"paths": ["s3://s3path"]}, format="orc" )

Sie können DataFrames auch in einem Skript verwenden (pyspark.sql.DataFrame).

dataFrame = spark.read\ .orc("s3://s3path")
Scala

Verwenden Sie für dieses Beispiel die Operation getSourceWithFormat.

import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.GlueContext import org.apache.spark.sql.SparkContext object GlueApp { def main(sysArgs: Array[String]): Unit = { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) val dynamicFrame = glueContext.getSourceWithFormat( connectionType="s3", format="orc", options=JsonOptions("""{"paths": ["s3://s3path"]}""") ).getDynamicFrame() } }

Sie können DataFrames auch in einem Skript verwenden (pyspark.sql.DataFrame).

val dataFrame = spark.read .orc("s3://s3path")

Beispiel: Schreiben von ORC-Dateien und -Ordnern in S3

Voraussetzungen: Sie benötigen einen initialisierten DataFrame (dataFrame) oder DynamicFrame (dynamicFrame). Sie benötigen auch Ihren erwarteten S3-Ausgabepfad, s3path.

Konfiguration: Geben Sie in Ihren Funktionsoptionen format="orc" an. Verwenden Sie in Ihren Verbindungsoptionen die paths-Schlüssel zum Angeben von s3path. Sie können die Art und Weise, wie der Writer mit S3 in connection_options interagiert, weiter verändern. Weitere Formate finden Sie unter Mögliche Formate für ETL-Eingaben und -Ausgaben in AWS Glue: Referenz zur Amazon-S3-Verbindungsoption. Das folgende Code-Beispiel veranschaulicht den Prozess:

Python

Verwenden Sie für dieses Beispiel die Methode write_dynamic_frame.from_options.

from pyspark.context import SparkContext from awsglue.context import GlueContext sc = SparkContext.getOrCreate() glueContext = GlueContext(sc) glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="s3", format="orc", connection_options={ "path": "s3://s3path" } )

Sie können DataFrames auch in einem Skript verwenden (pyspark.sql.DataFrame).

df.write.orc("s3://s3path/")
Scala

Wählen Sie für dieses Beispiel die Methode getSinkWithFormat.

import com.amazonaws.services.glue.util.JsonOptions import com.amazonaws.services.glue.{DynamicFrame, GlueContext} import org.apache.spark.SparkContext object GlueApp { def main(sysArgs: Array[String]): Unit = { val spark: SparkContext = new SparkContext() val glueContext: GlueContext = new GlueContext(spark) glueContext.getSinkWithFormat( connectionType="s3", options=JsonOptions("""{"path": "s3://s3path"}"""), format="orc" ).writeDynamicFrame(dynamicFrame) } }

Sie können DataFrames auch in einem Skript verwenden (pyspark.sql.DataFrame).

df.write.orc("s3://s3path/")

ORC-Konfigurationsreferenz

Es gibt keine format_options-Werte für format="orc". Es können jedoch alle Optionen, die vom zugrunde liegenden SparkSQL-Code akzeptiert werden, im Rahmen des connection_options-Map-Parameters übergeben werden.