mysql - 从 MySQL 读取位数据类型并使用 AWS Glue 转换为 Redshift 时出现问题

标签 mysql pyspark aws-glue

我在 MySQL 数据库中有一个表,其中包含一个名为 activity 的列,该列的数据类型为 BIT。当转换为 INT 时,它可以取值 1,2 或 3。

在 AWS Glue 中使用爬虫时,它会将 activity 识别为 BOOLEAN。我试图编辑表的架构并将 activity 的数据类型更改为 INT 但 Glue 在运行作业时仍将其读取为 BOOLEAN。

我也曾尝试使用 ApplyMapping 将其转换为 INT 但没有成功。

关于如何解决这个问题有什么想法吗?

最佳答案

我通过将查询下推到 MySQL 数据库解决了这个问题,我在将 BIT 读入 Glue 时将其 CAST 为 INT 使用:

pushdown_query = "(SELECT col1, CAST(activity AS INT) AS activity FROM my_table) my_table"

df = glueContext.read.format("jdbc")\
.option("driver", "com.mysql.jdbc.Driver") \
.option("url", db_url) \
.option("dbtable", pushdown_query) \
.option("user", db_user) \
.option("password", db_pass).load()

关于mysql - 从 MySQL 读取位数据类型并使用 AWS Glue 转换为 Redshift 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52992417/

相关文章:

mysql - 如何获得所有客户的前3个订单?

python - 如何在 Azure Databricks PySpark 中执行存储过程?

python - java.lang.OutOfMemoryError : Unable to acquire 100 bytes of memory, 得到 0

apache-spark - __HIVE_DEFAULT_PARTITION__ 作为胶水 ETL 作业中的分区值

aws-glue - 来自 AWS secret 管理器的 AWS Glue 连接

mysql - sql查询仅当它们具有不同的值计数时才显示结果?

mysql - 编写具有多个连接的 MySQL 语句

amazon-web-services - AWS Glue 爬虫无法对 CSV 文件进行分类

mysql - 如何将 "WITH"子句 MS SQL 转换为 MySQL

python - 转换 Python Lambda 函数而不将值返回给 Pyspark