【问题标题】:Loading parquet file from S3 to DynamoDB将镶木地板文件从 S3 加载到 DynamoDB
【发布时间】:2023-03-24 15:19:01
【问题描述】:

我一直在寻找将 Parquet 文件从 S3 加载(基本上是空的和恢复)到 DynamoDB 的选项。 Parquet 文件本身是通过在 EMR 集群上运行的 spark 作业创建的。这里有几件事要记住,

  1. 我无法使用 AWS 数据管道
  2. 文件将包含数百万行(比如 1000 万行),因此需要一个有效的解决方案。我相信 boto API(即使是批量写入)可能没有那么高效?

还有其他选择吗?

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-dynamodb amazon-emr parquet


    【解决方案1】:

    您能否仅参考 Spark RDD 中的 Parquet 文件并让工作人员将条目放入 dynamoDB?忽略在每个工作人员中缓存 DynamoDB 客户端以便在不同行中重用的挑战,它需要一些 scala 来获取一行,为 dynamo 和 PUT 构建一个条目就足够了。

    顺便说一句:在这里按需使用 DynamoDB,因为它可以很好地处理峰值负载,而您不必承诺某些 SLA。

    【讨论】:

    • 我认为没有办法将 RDD 放到 DynamoDB 中。至少我找不到任何参考。任何指针?
    • 恐怕你必须自己实现它。但它会是“火花之路”
    【解决方案2】:

    看看下面的答案: https://stackoverflow.com/a/59519234/4253760

    解释过程:

    1. 创建所需的数据框
    2. 使用 .withColumn 创建新列并使用 psf.collect_list 转换为所需的集合/json 格式,在新列中 相同的数据框。
    3. 删除所有不必要的(表格)列,在 Spark 中仅保留 JSON 格式的 Dataframe 列。
    4. 按照答案中的说明将 JSON 数据加载到 DynamoDB 中。

    我的个人建议:无论你做什么,都不要使用 RDD。即使在 Scala 中,RDD 接口也比任何语言的 Dataframe API 慢 2-3 倍。 只要您不使用 UDF,Dataframe API 的性能就与编程语言无关。

    【讨论】:

      猜你喜欢
      • 2021-08-17
      • 2023-03-27
      • 2021-07-07
      • 1970-01-01
      • 2020-04-01
      • 1970-01-01
      • 2020-10-26
      • 2018-07-28
      • 2021-07-18
      相关资源
      最近更新 更多