AWS Glue是一种完全托管且自动化的ETL(抽取、转换、加载)服务,可使大数据分析和数据湖底层的抽取、转换和加载变得更容易,本质上是将数据铺平,让分析和挖掘更轻松。
然而,当您在使用AWS Glue时,您还需要为您的ETL作业配置版本控制,并对您的代码进行存储和管理,以确保能够轻松地跟踪历史变更。同时,为将来的开发变化做好准备,您应该将AWS Glue作业集成到您的持续集成和持续部署(CI / CD)过程中。以下是实现这些目标的一些步骤:
在 AWS Glue 中,您可以使用 Amazon S3 存储库和 AWS Lambda 函数来管理版本控制。这些存储库和函数可用于管理 AWS Glue ETL 作业的 DAG(有向无环图)定义、ETL 代码以及启动和停止这些作业的触发器。以下是一个版本控制的示例。
首先,您需要利用 AWS CLI 把 AWS Glue 作业中的配置上传到源代码管理系统(如Git)中,然后在每次修改后更新它。例如,在这里我们将 AWS Glue 作业保存到 S3 存储桶中:
aws s3 cp s3://[s3-bucket-name]/job/job-SAMPLE.conf s3://[s3-bucket-name]/job/job-SAMPLE.conf
接下来,在 AWS Glue Console 中对 Glue 作业配置进行更新,添加一个 AWS Lambda 函数来更新版本控制。它会基于 S3 存储库中的文件内容,生成一个 file-hash (文件哈希值),以便了解数据是否变化。
import boto3
import time
import os
import hashlib
from botocore.exceptions import ClientError
s3 = boto3.resource('s3')
client = boto3.client('glue')
def lambda_handler(event, context):
job_name = event['jobName']
bucket = event['bucket']
key = event['key']