1

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

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

还有其他选择吗?

4

2 回答 2

0

看看下面的答案: 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 的性能就与编程语言无关。

于 2020-04-21T20:39:22.557 回答
0

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

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

于 2019-04-23T16:32:47.777 回答