我正在尝试将DynamoDB表中的每一项导出到S3。我找到了这个教程https://aws.amazon.com/blogs/big-data/how-to-export-an-amazon-dynamodb-table-to-amazon-s3-using-aws-step-functions-and-aws-glue/,并按照示例进行了操作。基本上,
table = glueContext.create_dynamic_frame.from_options(
"dynamodb",
connection_options={
"dynamodb.input.tableName": table_name,
"dynamodb.throughput.read.percent": read_percentage,
"dynamodb.splits": splits
}
)
glueContext.write_dynamic_frame.from_options(
frame=table,
connection_type="s3",
connection_options={
"path": output_path
},
format=output_format,
transformation_ctx="datasink"
)我在非fine环境中的一个小表中测试了它,它工作得很好。但是我在生产中的Dynamo表有超过400 my,200 mil的项目。我想这需要一段时间,但我不知道需要多长时间。几个小时,甚至几天?有没有什么方法可以显示进展?例如,显示已经处理了多少项的计数。我不想盲目地开始这项工作并等待。
发布于 2020-10-08 01:36:27
一种方法是通过enable continuous logging为您的AWS胶水作业监控其进度。
另一种方法是使用Amazon S3 event notifications在S3中存储文件时触发Lambda函数。
发布于 2021-10-28 17:32:27
您在was文档中尝试过custom waiter类吗?例如,Glue工作的自定义服务员应该看起来像这样:
class JobCompleteWaiter(CustomWaiter):
def __init__(self, client):
super().__init__(
"JobComplete",
"get_job_run",
"JobRun.JobRunState",
{"SUCCEEDED": WaitState.SUCCEEDED, "FAILED": WaitState.FAILED},
client,
max_tries=100,
)
def wait(self, JobName, RunId):
self._wait(JobName=JobName, RunId=RunId)根据boto3文档,你应该期望一个任务有6种不同的可能状态:STARTING'|'RUNNING'|'STOPPING'|'STOPPED'|'SUCCEEDED'|'FAILED'|'TIMEOUT',所以我选择了签入,无论是SUCCEEDED还是FAILED。
https://stackoverflow.com/questions/64249267
复制相似问题