我正在尝试在 AWS Glue 中创建新的 Iceberg 表:
glue_database_name = "alex_iceberg_test_db"
glue_catalog_uri = "s3://alex-iceberg-test-storage"
my_namespace = 'alex_db'
# Instantiate glue catalog
catalog = load_catalog("glue", **{"type": "glue",
"s3.region": "region",
"profile": "ALEX",
"s3.access-key-id": "XXX",
"s3.secret-access-key": "YYY"})
# Define the Iceberg schema
schema = Schema(
NestedField(field_id=1, name="data", field_type=StringType(), required=False)
)
## Create the Iceberg table using the Iceberg catalog
table_name = 'test_1'
catalog.create_table(
identifier=f'{my_namespace}.{table_name}',
location=glue_catalog_uri,
schema=schema
)
并出现以下错误
OSError: When getting information for key 'metadata/00000-5df640cc-b47c-4b39-b578-07113565dab5.metadata.json' in bucket 'alex-iceberg-test-storage': AWS Error ACCESS_DENIED during HeadObject operation: No response body.
内部
alex-iceberg-test-storage
我确实有元数据,但 00000-5df640cc-b47c-4b39-b578-07113565dab5.metadata.json
不存在。
为什么要搜索该文件以及谁应该创建它?
您看到的错误消息表明 AWS Glue 正在尝试访问存储桶
00000-5df640cc-b47c-4b39-b578-07113565dab5
中名为 alex-iceberg-test-storage
.metadata.json 的文件,但无法找到它。该文件很可能包含 Iceberg 表格式的元数据。
在 Iceberg 中,元数据文件用于包含有关表结构、分区以及表运行所需的其他元数据的信息。 Iceberg 通常创建并管理这些文件。
但是,缺少此特定文件可能表明 Iceberg 表的构建或初始化方式存在问题。您可以检查并尝试以下几件事:
还值得注意的是,AWS Glue 本身并不支持 Iceberg 格式,因此您可能需要使用自定义解决方案或其他工具来与 AWS 中的 Iceberg 表进行交互。