You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Glue中通过现有连接执行Aurora MySQL的TRUNCATE与LOAD命令?

解决方案

方法1:Glue Python作业执行原生SQL

直接通过Glue Python作业调用MySQL原生命令,跳过可视化ETL转换,利用原生LOAD DATA的高效性:

  • 创建Glue Python作业,选择具备以下权限的IAM角色:Aurora MySQL访问权限、S3读取权限、Glue连接访问权限
  • 编写作业脚本,复用已配置的Glue连接获取数据库信息,执行SQL命令:
import pymysql
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
# 替换为你的Glue连接名称
conn_conf = glueContext.extract_jdbc_conf("Aurora-MySQL-Connection")

# 建立数据库连接
db_conn = pymysql.connect(
    host=conn_conf['host'],
    user=conn_conf['user'],
    password=conn_conf['password'],
    database='你的数据库名',
    port=int(conn_conf['port'])
)

try:
    with db_conn.cursor() as cursor:
        # 执行TRUNCATE
        cursor.execute("TRUNCATE TABLE 目标表名;")
        db_conn.commit()
        
        # 执行LOAD DATA FROM S3,根据你的文件格式调整参数
        load_cmd = """
        LOAD DATA FROM S3 's3://你的存储桶/文件路径/11gb文件.txt'
        INTO TABLE 目标表名
        FIELDS TERMINATED BY '|' -- 替换为你的字段分隔符
        LINES TERMINATED BY '\\n'
        IGNORE 1 LINES; -- 如果文件包含表头则添加
        """
        cursor.execute(load_cmd)
        db_conn.commit()
finally:
    db_conn.close()
  • 配置作业超时时间(Glue作业支持最长48小时,完全满足11GB文件加载需求)

方法2:简化Glue可视化作业配置

保留Glue作业框架,去掉冗余转换步骤:

  • 在Glue可视化作业的JDBC目标节点中,设置预操作为TRUNCATE TABLE 目标表名;
  • 直接将S3文件作为数据源,选择"直接JDBC写入"模式,让Glue调用MySQL高效写入逻辑
  • 前提:Aurora已配置S3集成(关联具备S3访问权限的IAM角色,参数组设置aws_default_s3_role)

关键注意事项

  • 必须为Aurora MySQL关联IAM角色,授予s3:GetObject权限,确保数据库能直接访问S3文件
  • 临时提升Aurora实例规格、调整InnoDB缓冲池大小,可加快大文件加载速度
  • 通过CloudWatch日志监控SQL执行进度,快速排查权限、文件格式等问题

内容的提问来源于stack exchange,提问作者Nicolás Lope de Barrios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:07:08