View a markdown version of this page

在 Glue AWS 中使用 ORC 格式 - AWS Glue

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 Glue AWS 中使用 ORC 格式

AWS Glue 從來源擷取資料,並將資料寫入以各種資料格式存放和傳輸的目標。如果您的資料是以 ORC 資料格式存放或傳輸,本文件會介紹在 Glue AWS 中使用資料的可用功能。

AWS Glue 支援使用 ORC 格式。此格式是效能導向、以資料行為基礎的資料格式。如需標準授權單位的格式簡介,請參閱 Apache Orc。

您可以使用 AWS Glue 從 Amazon S3 和串流來源讀取 ORC 檔案,以及將 ORC 檔案寫入 Amazon S3。您可以讀取和寫入來自 S3 的包含 ORC 檔案的 bzip 和 gzip 封存。您可以在 S3 連線參數 上設定壓縮行為,而不是在本頁討論的組態中設定。

下表顯示哪些常見的 AWS Glue 操作支援 ORC 格式選項。

讀取 寫入 串流讀取 對小型檔案進行分組 任務書籤
支援 支援 支援 不支援 支援*

*Glue AWS 1.0+ 版支援

範例:從 S3 讀取 ORC 檔案或資料夾

先決條件:您需要指向希望讀取的 ORC 檔案或資料夾的 S3 路徑 (s3path)。

組態:在您的函數選項中,指定 format="orc"。在您的 connection_options 中,使用 paths 索引鍵指定 s3path。您可以在 connection_options 中設定讀取器與 S3 的互動方式。如需詳細資訊,請參閱 Glue 中 ETL AWS 的連線類型和選項:Amazon S3 連線選項參考。

下列 AWS Glue ETL 指令碼顯示從 S3 讀取 ORC 檔案或資料夾的程序:

Python

在此範例中,使用 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" )

您也可以在指令碼中使用 DataFrames (pyspark.sql.DataFrame)。

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

在此範例中,使用 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() } }

您也可以在指令碼中使用 DataFrames (pyspark.sql.DataFrame)。

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

範例:將 ORC 檔案和資料夾寫入 S3

先決條件:您需要初始化 DataFrame (dataFrame) 或 DynamicFrame (dynamicFrame)。您還需要預期的 S3 輸出路徑 s3path。

組態:在您的函數選項中,指定 format="orc"。在您的連線選項中,使用 paths 鍵指定 s3path。您可以在 connection_options 中進一步更改寫入器與 S3 的互動方式。如需詳細資訊,請參閱 Glue 中 ETL AWS 輸入和輸出的資料格式選項:Amazon S3 連線選項參考。下列程式碼範例顯示了此程序:

Python

在此範例中,使用 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" } )

您也可以在指令碼中使用 DataFrames (pyspark.sql.DataFrame)。

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

在此範例中,使用 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) } }

您也可以在指令碼中使用 DataFrames (pyspark.sql.DataFrame)。

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

ORC 組態參考

無 format="orc" 的 format_options 值。不過任何底層的 SparkSQL 程式碼所接受的選項均可透過 connection_options 對應參數傳送。