我们正在为我们的仪表板应用程序设计一个大数据解决方案,并认真考虑Glue用于我们的初始ETL。目前Glue支持JDBC和S3作为目标,但我们的下游服务和组件将使用dynamodb更好地工作。我们想知道最终将记录从Glue移动到Dynamo的最佳方法是什么。
我们应该首先写入S3然后运行lambdas将数据插入Dynamo吗?这是最好的做法吗?要么 我们是否应该为Dynamodb使用第三方JDBC包装器并使用Glue直接写入Dynamo(不确定这是否可行,听起来有点可怕)或者 我们应该做别的吗?
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
我能够使用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"
答案 1 :(得分:0)
对于您的工作负载,Amaon实际上建议使用data pipelines。
绕过胶水。因此,它主要用于将S3文件加载到Dynamo。但这可能有效。
答案 2 :(得分:0)
您可以在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