AWS Glue 数据目录由不同的结构组成,例如
Database、
Table、
Partition、
Column等。还没有仔细研究过它们中的每一个,但似乎Parameters
字段(键值对的映射数组)存在于所有他们。我注意到如果表是由爬虫创建的,那么我们可以看到如下内容:
{
"CrawlerSchemaDeserializerVersion": "1.0",
"CrawlerSchemaSerializerVersion": "1.0",
"UPDATED_BY_CRAWLER": "some-crawler-name",
"averageRecordSize": "12",
"classification": "parquet",
"compressionType": "none",
"objectCount": "123",
"recordCount": "1234567",
"sizeKey": "1234567890",
"typeOfData": "file"
}
对于Table["Parameters"]
以及Table["StorageDescriptor"]["Parameters"]
。如果我们的表有分区,那么每个分区都有相同的字典,但averageRecordSize、objectCount、recordCount、sizeKey的值不同。将它们相加后,我们最终得到与 中相同的值Table["Parameters"]
。所有这些都是有道理的,我猜这些值决定了我们想要按需或按计划重新运行爬虫的逻辑。
我没有使用爬虫,而是使用boto3和气流手动管理多个 AWS Glue 目录。例如,我可以将db_1.table_1
目录12345中的分区定义复制到db_2.table_2
目录6789中,或者在table_1
. 然而,这个参数字段对我来说仍然是一个谜,我找不到任何与它相关的文档。
看起来有些键,例如recordCount
,保留供 AWS Glue 内部使用(尽管它们可以手动定义)。
- 其他服务(尤其是 Athena)是否也使用它们?
- 我在哪里可以找到这些键的列表及其含义,这样我的键就不会干扰?
文档提到这些键值对定义了与表关联的属性和一些限制:
- 每个键都是一个键字符串,长度不小于 1 或大于 255 字节,与单行字符串模式匹配。
- 每个值都是一个 UTF-8 字符串,长度不超过 512000 字节。
字段可以包含多少个键是否有任何限制
Parameters
?当您查询数据时,这些键值对的数量是否会影响性能?- 保持
Parameters
表、分区及其存储描述符的字段同步有多重要