【问题标题】:write spark dataframe rows as items in dynamoDB table将 spark 数据帧行写入 dynamoDB 表中的项目
【发布时间】:2016-06-27 15:29:50
【问题描述】:

有没有办法将我的spark 数据框的每一行写为dynamoDB 表中的新项目? (在pySpark

我将此代码与boto3 库一起使用,但我想知道是否有另一种方法,避免pandasfor loop 步骤:

sparkDF_dict = sparkDF.toPandas().to_dict('records')
for item in sparkDF_dict :
    table.put_item(Item = item)

【问题讨论】:

  • 这个问题有解决方案吗?关于这些东西的文档很少。似乎应该可以将 EMR 输出发送到 DynamoDB。
  • 我有完全相同的要求,但需要写入超过 500 万行。对此我们是否有更强大和并行的解决方案?
  • 这也是我正在遵循的方法。但是,大多数时候我在转换过程中收到数百万行的内存错误toPandas。我将 DF 拆分为多个较小的块,但在这种情况下,这项工作需要花费很多时间。也在寻找另一种方式。

标签: apache-spark amazon-dynamodb pyspark


【解决方案1】:

DynamoDB 提供BatchWriteItem API。它是 available in boto3,因此您可以在创建 sparkDF_dict 长 25 个元素的切片后调用它。请注意,BatchWriteItem API 仅支持writing 25 items at a time,并且并非所有写入一开始都可能成功(因为它们可能会在服务端受到限制并在响应的UnprocessedItems 部分返回给您)。您的应用程序需要查看响应中的 UnprocessedItems 并根据需要重试。

【讨论】:

    猜你喜欢
    • 2017-03-29
    • 2020-07-17
    • 2019-06-22
    • 2018-08-13
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    相关资源
    最近更新 更多