AWS Glue の Spark ジョブで Amazon S3 にある CSV を Amazon DynamoDB にロードしてみた。
- src_table.csv を作成する。
x y z
- src_table.csv を S3 バケットにアップロードする。
- AWS Glue のクローラでアップロードした CSV をクロールしてテーブルを作成する。
- Glue Spark ジョブを作成する。
- ジョブ名: csv2ddb_job
- Type: Spark
- Glue Version: Spark 2.4, Python 3 (Glue Version 2.0)
import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job ## @params: [JOB_NAME] args = getResolvedOptions(sys.argv, ['JOB_NAME']) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args['JOB_NAME'], args) datasource0 = glueContext.create_dynamic_frame.from_catalog(database = "test", table_name = "test_src_table_csv", transformation_ctx = "datasource0") applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("key", "string", "key", "string")], transformation_ctx = "applymapping1") datasink2 = glueContext.write_dynamic_frame_from_options( frame=applymapping1, connection_type="dynamodb", connection_options={ "dynamodb.output.tableName": "src_table", "dynamodb.throughput.write.percent": "1.0" } ) job.commit()
- 作成したジョブを実行すると DynamoDB のテーブルにデータがロードされた。