要解决AWS Glue没有将id(int)列复制到Redshift并且它为空白的问题,您可以尝试以下解决方法:
# 创建AWS Glue数据源
glueContext = GlueContext(SparkContext.getOrCreate())
# 读取数据源表
datasource = glueContext.create_dynamic_frame.from_catalog(database = "your_database", table_name = "your_table")
# 选择需要复制的列
datasource = datasource.select_fields(['id'])
# 将数据源写入Redshift
glueContext.write_dynamic_frame.from_jdbc_conf(frame = datasource, catalog_connection = "redshift_connection", connection_options = {"dbtable": "your_redshift_table"}, redshift_tmp_dir = "s3://your_s3_bucket/temp/")
请确保您在上述代码中正确替换以下参数:
your_database:您的AWS Glue数据源数据库名称。your_table:您的AWS Glue数据源表名称。your_redshift_table:您的Redshift表名称。redshift_connection:您的Redshift连接名称。your_s3_bucket:您的S3存储桶名称。确保Redshift表结构与AWS Glue数据源表结构匹配:检查Redshift表的结构,确保它包含与AWS Glue数据源表中的id列相匹配的列定义。如果Redshift表结构不匹配,您可以使用ALTER TABLE语句来更改表结构。
检查Redshift连接配置:确保您的AWS Glue作业使用正确的Redshift连接配置。您可以在AWS Glue控制台中检查连接配置,并确保连接配置包含正确的Redshift主机名、数据库名称、用户名和密码。
检查Redshift表的访问权限:确保您的AWS Glue作业具有足够的权限来向Redshift表写入数据。您可以在Redshift控制台中检查和更新表的访问权限。
这些解决方法应该能够帮助您解决AWS Glue没有将id(int)列复制到Redshift并且它为空白的问题。如果问题仍然存在,请确保您的数据源正确,并查看AWS Glue作业日志以获取更多错误信息。