在AWS Glue中遇到“在模式中找不到列”column_name“”的错误通常是由于数据源和数据目标之间的列不匹配引起的。这可能是由于列名拼写错误、大小写不匹配或数据类型不匹配等原因引起的。以下是一个解决方法的示例代码:
import boto3
# 创建Glue客户端
glue_client = boto3.client('glue')
# 获取表的模式定义
response = glue_client.get_table(
DatabaseName='your_database_name',
Name='your_table_name'
)
# 检查列是否存在于模式中
column_name = 'your_column_name'
if column_name not in [col['Name'] for col in response['Table']['StorageDescriptor']['Columns']]:
# 如果列不存在,则添加列到模式中
response['Table']['StorageDescriptor']['Columns'].append({
'Name': column_name,
'Type': 'string' # 请根据实际情况设置列的数据类型
})
# 更新表的模式
glue_client.update_table(
DatabaseName='your_database_name',
TableInput=response['Table']
)
请注意,上述示例代码假设您已经配置了AWS CLI或AWS SDK的凭证,并具有足够的权限来访问Glue服务。您需要将your_database_name
替换为实际的数据库名称,your_table_name
替换为实际的表名称,以及your_column_name
替换为实际的列名称。
此代码将检查给定的列名是否存在于表的模式中。如果不存在,则将该列添加到模式中,并使用默认的数据类型(在示例代码中为字符串类型)。然后,它将使用update_table
方法更新表的模式。
请根据您的实际需求进行适当的修改和调整。