我试图在AWS Glue中连接到DynamoDB
Background and objective.
我尝试将Glue连接到DynamoDB。
总结
-
- GlueからDynamoDBへの接続には、ConnectionTypeをdynamodbに指定する事で利用できる。
-
- DynamoDBからの読み込みには、ETLコネクターとExportコネクターの2つが用意されている。
ExportコネクターはDynamoDBのPITRを使用してS3に一度出力したものを読み込む。データサイズが大きい(マニュアルには80GBを超える場合と記載)ものに向いている。
概述
你可以通过使用ConnectionType参数来指定连接类型。通过ConnectionType参数,可以连接到不同的DataSource和Sink。
目前为止,以下的ConnectionType(连接类型)是可用的。请点击这里查看详细信息。
DynamoDB (No paraphrasing needed, as it remains the same in Chinese)
这篇文章主要整理了DynamoDB的连接类型。
-
- connectionTypeには、dynamodbを指定します。
-
- 接続には、下記のとおり、SourceおよびSinkで別れており、さらにSourceでも2つのコネクタが用意されているため、個別に整理します。
Source
DynamoDB ETL コネクタ
DynamoDB エクスポートコネクター
Sink
源:DynamoDB ETL 连接器
読み取り元の DynamoDB テーブル。dynamodb.throughput.read.percent
・デフォルトでは、”0.5″
・許容値は “0.1” から “1.5”・使用する読み込みキャパシティーユニット (RCU) の割合。
・0.5 ではデフォルトの読み込み速度を表し、AWS Glue はテーブルのRCUの半分を消費しようとすることを意味する
・DynamoDB テーブルがオンデマンドモードの場合、AWS Glue はテーブルの読み取り容量を 40000 として処理するとのこと。
大きなテーブルをエクスポートする場合は、DynamoDB テーブルをオンデマンドモードに切り替えることを推奨とのこと。dynamodb.splits
・デフォルトでは、”1″
・許容値は “1” から “1,000,000”・読み取り中にこの DynamoDB テーブルを分割するパーティションの数を定義する。
・1 は並列処理がないことを意味している。より良いパフォーマンスを得るためには、より大きな値を指定することを強く推奨とのこと。dynamodb.sts.roleArn
・クロスアカウントアクセスのために引き受ける IAM ロール の ARN。dynamodb.sts.roleSessionName
STS セッション名。デフォルトでは、「glue-dynamodb-read-sts-session」に設定されている。
源:DynamoDB导出连接器
挙動について
本コネクターは、DynamoDB ExportTableToPointInTime リクエストを呼び出し、これを指定した Amazon S3 の場所に DynamoDB JSON 形式で保存します。
そして、Glue は、Amazon S3 のエクスポート場所からデータを読み取ることによって DynamicFrame オブジェクトを作成するとのこと。
特徴
DynamoDB テーブルサイズが 80 GB を超える場合、エクスポートコネクタは ETL コネクタよりもパフォーマンスが向上
エクスポートリクエストが AWS Glue ジョブで Spark プロセスの外部で実行される場合、AWS Glue ジョブの自動スケーリングを有効にして、エクスポートリクエスト中の DPU 使用量を節約可能。
エクスポートコネクタでは、Spark エグゼキューターの並列処理のためのスプリット数や、DynamoDB スループットの読み取り率を設定する必要がない。
・s3 に設定すると、AWS Glue DynamoDB エクスポートコネクタが有効になるが、新しい DynamoDB エクスポートの作成はスキップされ、代わりに dynamodb.s3.bucket と dynamodb.s3.prefix がそのテーブルの過去のエクスポートの Amazon S3 ロケーションとして使用されるdynamodb.tableArn○読み取り元の DynamoDB テーブルのARN
dynamodb.unnestDDBJson
ブール値
デフォルト値は false に設定true に設定すると、エクスポートに存在する DynamoDB JSON 構造体のネスト解除の変換が実行される。dynamodb.s3.bucket
DynamoDB ExportTableToPointInTime プロセスが実行される Simple Storage Service (Amazon S3) バケットの場所を示すエクスポートファイル形式は DynamoDB JSON。
・dynamodb.s3.prefixやdynamodb.s3.bucketOwnerなどのオプションもある。dynamodb.sts.roleArn
IAMロールのARNDynamoDB テーブルのクロスアカウントアクセスおよび/またはクロスリージョンアクセスのために割り当てる IAM ロール の ARN。dynamodb.sts.roleSessionName
STS セッション名
デフォルトでは、「glue-dynamodb-read-sts-session」に設定
下沉
dynamodb.throughput.write.percent
・使用する書き込みキャパシティーユニット (WCU) の割合。
・デフォルトでは、”0.5″
・許容値は “0.1” から “1.5”0.5 ではデフォルトの読み込み速度を表し、AWS Glue はテーブルの書き込み容量の半分を消費しようとすることを意味する。
上記の値を 0.5 より上に設定すると、AWS Glue は書き込みリクエストレートを増加させ、0.5 より低くした場合はそのリクエストレートを減少
・DynamoDB テーブルがオンデマンドモードの場合、AWS Glue はテーブルの書き込み容量を 40000 として処理する。大きなテーブルをインポートする場合は、DynamoDB テーブルをオンデマンドモードに切り替えることを推奨。dynamodb.output.numParallelTasks
同時に DynamoDB に書き込める並列タスクの数Spark タスクごとに許容される WCU を計算するために使用。
詳細は、マニュアルを確認してください。dynamodb.output.retry
・再実行回数
・デフォルトでは10DynamoDB から ProvisionedThroughputExceededException が送られている場合の、再試行の実行回数を定義。dynamodb.sts.roleArn
IAMロールのARNクロスアカウントアクセスのために引き受ける IAM ロール の ARN。dynamodb.sts.roleSessionName
(任意) STS セッション名。デフォルトでは、「glue-dynamodb-write-sts-session」に設定
实践
事前准备
准备DynamoDB
创建IAM角色和策略
- 除了Glue和S3之外,还将配置IAM策略以让其能够访问DynamoDB。
源(DynamoDB ETL连接器)->接收器
使用DynamoDB ETL连接器从DynamoDB读取并写入到Sink进行尝试。
源(DynamoDB导出连接器)-> 接收器
使用DynamoDB ETL导出连接器读取并写入到Sink来试验从DynamoDB的读取和写入。
考察 chá) – To conduct an investigation or research.
这次我们尝试了从Glue向DynamoDB的读取和写入。
从Glue进行读取操作有两种连接器,ETL连接器和Export连接器。
使用Export连接器时,需要进行DynamoDB的PITR,并在将数据先输出到S3后再进行读取,因此相较于ETL连接器,执行时间较长。※据说明书,超过80GB时,使用Export连接器可以提高性能。
我打算以较大的尺寸来比较ETL连接器和导出连接器。
请参考。