AWS Glue はソースからデータを取得し、さまざまなデータ形式で保存および転送されたターゲットにデータを書き込みます。このドキュメントでは、データが ORC データ形式で保存または転送される場合に、AWS Glue でデータを使用する際に利用できる機能について説明します。
AWS Glue は、ORC 形式の使用をサポートしています。この形式は、パフォーマンス指向の列ベースのデータ形式です。標準局による形式の概要については、「Apache Orc」を参照してください。
AWS Glue を使用して、Amazon S3 およびストリーミングソースから ORC ファイルを読み取り、Amazon S3 に ORC ファイルを書き込むことができます。S3 から、ORC ファイルを含む bzip および gzip アーカイブを読み書きすることができます。このページで説明する設定ではなく、S3 接続パラメータ 上で圧縮動作を設定します。
次の表は、ORC 形式のオプションをサポートする一般的な AWS Glue の機能を示しています。
| 読み込み |
書き込み |
ストリーミングの読み取り |
小さなファイルのグループ化 |
ジョブのブックマーク |
| サポート |
サポート対象 |
サポート |
サポートされていません |
サポート対象* |
*AWS Glue バージョン 1.0+ でサポート
前提条件: 読み取る ORC ファイルまたはフォルダへの S3 パス (s3path) が必要です。
設定: 関数オプションで format="orc" を指定します。connection_options で、paths キーを使用して s3path を指定します。リーダーが S3 とやり取りする方法は、connection_options で設定できます。詳細については、AWS Glue: Amazon S3 接続のオプションのリファレンス の「ETL の接続タイプとオプション」を参照してください。
次の 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"
)
スクリプト (pyspark.sql.DataFrame) では 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()
}
}
スクリプト (pyspark.sql.DataFrame) では DataFrame を使用することもできます。
val dataFrame = spark.read
.orc("s3://s3path")
前提条件: 初期化された DataFrame (dataFrame) または DynamicFrame (dynamicFrame) が必要です。また、予想される S3 出力パスである s3path も必要になります。
設定: 関数オプションで format="orc" を指定します。接続オプションでは、s3path を指定するための paths キーを使用します。ライターが S3 と対話する方法を、connection_options でさらに詳しく変更することができます。詳細については、AWS Glue: Amazon S3 接続のオプションのリファレンス の「ETL の入力および出力のデータ形式オプション」を参照してください。次のコード例は、プロセスを示しています。
- 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"
}
)
スクリプト (pyspark.sql.DataFrame) では 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)
}
}
スクリプト (pyspark.sql.DataFrame) では DataFrame を使用することもできます。
df.write.orc("s3://s3path/")
format="orc" の format_options 値はありません。ただし、基になる SparkSQL コードで受け入れられるオプションは、connection_options マップパラメータを介して渡すことができます。