我正在使用pyspark从Glue作业访问DynamoDB。目前我正在使用write_dynamic_frame_from_options方法在Dynamo DB中写入一个条目,该方法运行良好。现在我需要更新或删除DynamoDB中的现有项,有没有办法做到这一点。我检查了AWS Glue Context的文档,但是只有写入选项,没有更新或删除选项
2nbm6dog1#
带有Spark的DynamoDB连接器没有删除或更新的能力,它只能使用添加新数据或覆盖现有数据的PutItem。如果你需要Update或Delete,你需要使用boto3函数而不是Spark。
PutItem
Update
Delete
yftpprvb2#
详情请参阅以下网页:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html#pyspark-drop_fields-example你可以尝试类似下面的代码来删除dynodb中的现有项目,删除对象后将更新的对象写入dynamo:
from awsglue.dynamicframe import DynamicFrame df = glueContext.create_dynamic_frame.from_options( connection_type="dynamodb", connection_options={ "dynamodb.input.tableName": "my-table", "dynamodb.input.key.partitionKey": "key1", "dynamodb.input.key.sortKey": "key2" } ) df = df.drop_fields(dynamic_frame.schema().field_names()) glueContext.write_dynamic_frame_from_options( frame=df, connection_type="dynamodb", connection_options={ "dynamodb.output.tableName": "my-table", "dynamodb.output.operation": "delete" } )
2条答案
按热度按时间2nbm6dog1#
带有Spark的DynamoDB连接器没有删除或更新的能力,它只能使用添加新数据或覆盖现有数据的
PutItem
。如果你需要
Update
或Delete
,你需要使用boto3函数而不是Spark。yftpprvb2#
详情请参阅以下网页:
https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-crawler-pyspark-extensions-dynamic-frame.html#pyspark-drop_fields-example
你可以尝试类似下面的代码来删除dynodb中的现有项目,删除对象后将更新的对象写入dynamo: