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

AWS Glue无法导入MySQL BIT类型布尔列数据的解决咨询

解决MySQL BIT类型列在AWS Glue中值为空的问题

方案1:修改JDBC连接串,强制解析BIT类型为整数

MySQL JDBC驱动默认会把BIT(1)映射为Boolean,但Glue对这种映射的处理存在问题。在Glue的JDBC连接属性中添加tinyInt1isBit=false参数,可让驱动将BIT列解析为TINYINT,Glue就能正确读取非空值。

操作步骤:

  • 打开AWS Glue控制台,找到对应JDBC连接
  • 编辑连接,在「额外JDBC属性」中添加键值对:tinyInt1isBit=false
  • 重新运行爬虫,或手动将数据目录中的列类型改为INT,之后ETL作业即可正常读取值

方案2:在Glue ETL脚本中手动处理类型

若不想修改JDBC连接,可直接在ETL脚本里手动指定列类型并转换:

  1. 读取数据源时自定义Schema,将该列类型设为int,覆盖自动映射的boolean
  2. 通过Spark函数完成类型转换

示例脚本片段:

from pyspark.sql.functions import col

# 自定义表Schema,替换为实际表的完整字段定义
custom_schema = "is_available int, column2 string, column3 bigint, ..."
df = glueContext.create_dynamic_frame.from_options(
    connection_type="mysql",
    connection_options={
        "url": "jdbc:mysql://your-db-host:3306/your-db-name",
        "dbtable": "your-table-name",
        "user": "your-db-user",
        "password": "your-db-pass"
    },
    schema=custom_schema
)

# 或在现有动态帧上转换列类型
df = df.withColumn("is_available", col("is_available").cast("int"))

方案3:修改MySQL表结构(可选)

如果业务允许,直接将BIT类型列改为TINYINT(1),Glue爬虫会直接识别为INT类型,无需额外配置:

ALTER TABLE your_table MODIFY COLUMN is_available TINYINT(1) DEFAULT 0 NOT NULL;

内容的提问来源于stack exchange,提问作者J.Cart

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:04:54