pyspark 使用粘合作业更新/删除DyanamoDb中的项目

uqjltbpv  于 2023-01-20  发布在  Spark
关注(0)|答案(2)|浏览(203)

我正在使用pyspark从Glue作业访问DynamoDB。目前我正在使用write_dynamic_frame_from_options方法在Dynamo DB中写入一个条目,该方法运行良好。
现在我需要更新或删除DynamoDB中的现有项,有没有办法做到这一点。
我检查了AWS Glue Context的文档,但是只有写入选项,没有更新或删除选项

2nbm6dog

2nbm6dog1#

带有Spark的DynamoDB连接器没有删除或更新的能力,它只能使用添加新数据或覆盖现有数据的PutItem
如果你需要UpdateDelete,你需要使用boto3函数而不是Spark。

yftpprvb

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"
    }
)

相关问题