DynamoDB Glue Catalog表的数据检索是如何工作的?

0

【以下的问题经过翻译处理】 我已经配置了一个Glue目录表并创建了一个爬虫来索引DynamoDB表,想要使用这个Glue目录表来查询Glue作业中的DDB表(使用"glueContext.create_dynamic_frame_from_catalog()"函数)。

我的问题是,在这种情况下,对DDB表执行了哪些操作来填充DynamicFrame结果,以便我可以在Glue作业中访问/查询它?是否执行了“SCAN”操作来检索所有数据以填充动态帧,或者在定义任何过滤条件后,对DDB表进行“QUERY”操作来惰性地填充DynamicFrame?

作为后续问题,如果我需要在Glue作业中使用DDB表来执行特定主键的查找,最推荐/最具成本效益的方法是什么?我应该像现在这样使用Glue目录表,还是应该直接使用Boto3查询DDB表?

我的Glue作业正在使用PySpark。

profile picture
EXPERTE
gefragt vor einem Jahr43 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 当您使用Glue Crawler爬取表时,Glue会扫描表格并读取前1MB(称为数据采样)来推断架构。如果您有一个架构与表格不同的表格,则应禁用数据采样并让爬虫扫描整个表格。

在使用glueContext.create_dynamic_frame_from_catalog()读取表格时,根据dynamodb.splits定义进行并行的完整表格扫描,并读取到数据框架中。这会消耗表格的容量,如果您的表格用于其他应用程序,则可以将Glue从[0-1.5] dynamodb.throughput.read.percent的扫描速率限制,以使其不会消耗所有可用的容量。任何过滤标准必须在完整的数据读取之后执行。

https://docs.aws.amazon.com/zh_cn/glue/latest/dg/aws-glue-programming-etl-connect.html

您现在还可以选择在不消耗容量的情况下读取数据,其中Glue首先使用DynamoDBExportTableToPointInTime将表格导出到S3。 DynamoDB表必须启用PITR。对目录的任何后续读取都将过时,直到您进行导出。这对于一次性任务或不经常发生的任务非常有用。

dyf = glue_context.create_dynamic_frame.from_options(
    connection_type="dynamodb",
    connection_options={
        "dynamodb.export": "ddb",
        "dynamodb.tableArn": "<test_source>",
        "dynamodb.s3.bucket": "<bucket name>",
        "dynamodb.s3.prefix": "<bucket prefix>",
        "dynamodb.s3.bucketOwner": "<account_id>",
    }
)

profile picture
EXPERTE
beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen