我在mysql数据库中有一个表,其中包含一个名为 activity 数据类型为bit。当转换为int时,它可以采用值1、2或3。在aws胶水中使用爬虫时,它会识别 activity 作为布尔值。我试图编辑表的模式并更改表的数据类型 activity 但glue在运行作业时仍将其读取为布尔值。我也尝试使用applymapping将其转换为int,但没有成功。有什么办法解决这个问题吗?
activity
ljsrvy3e1#
您可以使用spark/pyspark代码来读取mysql数据库中的表。例如,使用pyspark如下:
jdbcUrl = "jdbc:mysql://{0}:{1}/{2}".format(jdbcHostname, jdbcPort, jdbcDatabase) connectionProperties = { "user" : jdbcUsername, "password" : jdbcPassword, "driver" : "com.mysql.jdbc.Driver" } employees_table = spark.read.jdbc(jdbcUrl, "employees", connectionProperties)
您可以在这个链接上找到更多信息:spark数据源希望spark在推断模式方面比aws glue做得更好。
i2loujxw2#
我通过将一个查询下推到mysql数据库解决了这个问题,在mysql数据库中,我使用以下命令将位读入glue时将其转换为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()
2条答案
按热度按时间ljsrvy3e1#
您可以使用spark/pyspark代码来读取mysql数据库中的表。例如,使用pyspark如下:
您可以在这个链接上找到更多信息:spark数据源希望spark在推断模式方面比aws glue做得更好。
i2loujxw2#
我通过将一个查询下推到mysql数据库解决了这个问题,在mysql数据库中,我使用以下命令将位读入glue时将其转换为int: