【问题标题】:How to move data from Glue to Dynamodb如何将数据从 Glue 移动到 Dynamodb
【发布时间】:2018-08-10 08:08:53
【问题描述】:

我们正在为我们的一个仪表板应用程序设计一个大数据解决方案,并认真考虑将 Glue 用于我们的初始 ETL。目前 Glue 支持 JDBC 和 S3 作为目标,但我们的下游服务和组件将更好地与 dynamodb 配合使用。我们想知道最终将记录从 Glue 移动到 Dynamo 的最佳方法是什么。

我们是否应该先写入 S3,然后运行 ​​lambdas 将数据插入 Dynamo?这是最佳做法吗?要么 我们是否应该为 Dynamodb 使用第三方 JDBC 包装器并使用 Glue 直接写入 Dynamo(不确定这是否可能,听起来有点吓人)或者 我们应该做点别的吗?

非常感谢任何帮助。谢谢!

【问题讨论】:

    标签: amazon-s3 amazon-dynamodb etl aws-glue


    【解决方案1】:

    您可以将以下行添加到您的 Glue ETL 脚本中:

        glueContext.write_dynamic_frame.from_options(frame =DynamicFrame.fromDF(df, glueContext, "final_df"), connection_type = "dynamodb", connection_options = {"tableName": "pceg_ae_test"})
    

    df 应该是 DynamicFrame 类型

    【讨论】:

    • “AWS Glue 当前不支持写入 Amazon DynamoDB。” docs.aws.amazon.com/glue/latest/dg/…
    • 通过阅读文档,我认为我不能直接写入 dynamodb,但我尝试了上面的脚本,它确实有效
    • 嘿,我想更新一个条目,如果它已经存在于 dynamodb 中,我该如何实现呢?当已经存在具有相同主键的条目时,glueContext.write_dynamic_frame 失败。请帮忙
    • 官方只有 Glue 版本 1 兼容 write on dynamodb
    【解决方案2】:

    我可以使用 boto3 进行编写...绝对不是最好的加载方法,而是它的工作方法。 :)

    dynamodb = boto3.resource('dynamodb','us-east-1') table = 
    dynamodb.Table('BULK_DELIVERY')
    
    print "Start testing"
    
    for row in df1.rdd.collect():
        var1=row.sourceCid 
        print(var1) table.put_item( Item={'SOURCECID': "{}".format(var1)} )
    
    print "End testing"
    

    【讨论】:

      【解决方案3】:

      对于您的工作负载,Amaon 实际上建议使用 data pipelines

      它绕过胶水。所以它主要用于将 S3 文件加载到 Dynamo。但它可能会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-13
        • 2023-02-14
        • 1970-01-01
        • 2012-05-27
        • 2016-12-11
        • 2014-03-28
        • 1970-01-01
        • 2019-07-08
        相关资源
        最近更新 更多