AWS:从 Pandas 数据帧写入 DynamoDB
AWS: writing from Pandas dataframe to DynamoDB
我在 Python 中编写了一份 AWS Glue 作业。其中有一个很大的 Pandas dataframe - 其中包含的数据需要写入 DynamoDB。
我目前正在使用 Glue 的“write_dynamic_frame”功能来实现此目的,因为它可以解决诸如在短时间内写入大量数据时有时会出现的“500 SlowDown”错误等问题时间。
它正在工作,但实际将数据写入数据库的速度相当慢(写入 1,000 条记录需要 2 分钟以上)。
我的流程目前是这样的:
my_df = {populate Pandas dataframe...}
table_name = "my_dynamodb_table_name"
# Pandas -> Spark -> DynamicFrame
spark_df: DataFrame = spark.createDataFrame(my_df)
result_df: DynamicFrame = DynamicFrame.fromDF(spark_df, glue_context, "result_df")
num_partitions: int = result_df.toDF().rdd.getNumPartitions()
glue_context.write_dynamic_frame.from_options(
frame=result_df,
connection_type="dynamodb",
connection_options={
"dynamodb.output.tableName": table_name,
"dynamodb.throughput.write.percent": "1.5",
"dynamodb.output.retry": "30"
}
)
DynamoDB批量写入数据有什么机制吗?我有超过一百万条记录需要写。
感谢您的帮助。
正如@Parsifal 所暗示的,这个问题与我的 DynamoDB table 的写入吞吐量有关。一旦将其更改为更合适的 table 值,数据的摄取速度就会快得多。
我在 Python 中编写了一份 AWS Glue 作业。其中有一个很大的 Pandas dataframe - 其中包含的数据需要写入 DynamoDB。
我目前正在使用 Glue 的“write_dynamic_frame”功能来实现此目的,因为它可以解决诸如在短时间内写入大量数据时有时会出现的“500 SlowDown”错误等问题时间。
它正在工作,但实际将数据写入数据库的速度相当慢(写入 1,000 条记录需要 2 分钟以上)。
我的流程目前是这样的:
my_df = {populate Pandas dataframe...}
table_name = "my_dynamodb_table_name"
# Pandas -> Spark -> DynamicFrame
spark_df: DataFrame = spark.createDataFrame(my_df)
result_df: DynamicFrame = DynamicFrame.fromDF(spark_df, glue_context, "result_df")
num_partitions: int = result_df.toDF().rdd.getNumPartitions()
glue_context.write_dynamic_frame.from_options(
frame=result_df,
connection_type="dynamodb",
connection_options={
"dynamodb.output.tableName": table_name,
"dynamodb.throughput.write.percent": "1.5",
"dynamodb.output.retry": "30"
}
)
DynamoDB批量写入数据有什么机制吗?我有超过一百万条记录需要写。
感谢您的帮助。
正如@Parsifal 所暗示的,这个问题与我的 DynamoDB table 的写入吞吐量有关。一旦将其更改为更合适的 table 值,数据的摄取速度就会快得多。