1

AWS Glue 数据目录由不同的结构组成,例如 DatabaseTablePartitionColumn等。还没有仔细研究过它们中的每一个,但似乎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"]。如果我们的表有分区,那么每个分区都有相同的字典,但averageRecordSizeobjectCountrecordCountsizeKey的值不同。将它们相加后,我们最终得到与 中相同的值Table["Parameters"]。所有这些都是有道理的,我猜这些值决定了我们想要按需或按计划重新运行爬虫的逻辑。

我没有使用爬虫,而是使用boto3气流手动管理多个 AWS Glue 目录。例如,我可以将db_1.table_1目录12345中的分区定义复制到db_2.table_2目录6789中,或者在table_1. 然而,这个参数字段对我来说仍然是一个谜,我找不到任何与它相关的文档。

看起来有些键,例如recordCount,保留供 AWS Glue 内部使用(尽管它们可以手动定义)。

  1. 其他服务(尤其是 Athena)是否也使用它们?
  2. 我在哪里可以找到这些键的列表及其含义,这样我的键就不会干扰?
  3. 文档提到这些键值对定义了与表关联的属性和一些限制:

    1. 每个键都是一个键字符串,长度不小于 1 或大于 255 字节,与单行字符串模式匹配。
    2. 每个值都是一个 UTF-8 字符串,长度不超过 512000 字节。

    字段可以包含多少个键是否有任何限制Parameters?当您查询数据时,这些键值对的数量是否会影响性能?

  4. 保持Parameters表、分区及其存储描述符的字段同步有多重要
4

1 回答 1

0
  1. 是的,例如 Redshift 频谱使用它来优化查询计划 - https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE.html#r_CREATE_EXTERNAL_TABLE-parameters
  2. 不幸的是,没有完整的文档解释所有 TBLPROPERTIES。

  3. 我认为它不会对性能产生负面影响。内部属性通常用于某些活动,例如crawled_by由 GluenumRows使用,由 Athena/Redshift 使用,has_encrypted_data用于检查 s3 数据是否加密等等。

  4. 保持同步很重要,因为这些属性用于有效地管理表和查询。某些属性,例如skip.header.line.count=2可以跳过前两行并且不会被视为数据行。
于 2019-09-26T14:17:48.047 回答