加入AWS上的许多大文件



我正在寻求应该使用哪种服务的建议。我是大数据的新手,对它们在AWS上的差异感到困惑。

用例:

我每天收到60-100个csv文件(每个文件的大小可以从几MB到几GB不等(。有六个相应的模式,每个文件只能被视为一个表的一部分。我需要将这些文件加载到六个数据库表中,并在它们之间执行联接并生成每日输出。生成输出后,不再需要数据库中的数据,所以我们可以截断这些表,并在第二天等待。

文件具有可预测的命名模式:

  • A_<时间戳1>。csv转到A表
  • A_<时间戳2>。csv转到A表
  • B_<时间戳1>。csv转到B表
  • 等等

哪项服务可以用于此目的?

  • AWS Redshift(在此处执行联接(
  • AWS胶水(加载到红移(
  • AWS EMR(火花(

或者其他什么?我听说spark可以用来连接,但什么是正确、最佳和高性能的连接方式?

编辑

感谢您的回复。我现在看到两种选择:

  1. 使用AWS Glue,设置6个爬网程序,这些爬网程序将在触发文件上加载到特定的AWS Glue数据目录,​使用Athena执行SQL联接
  2. 使用AWS Glue,设置6个爬网程序,这些爬网程序将在触发文件上加载到特定的AWS Glue数据目录,触发火花作业(无服务器形式的AWS-Glue(来进行SQL连接,并将设置输出到S3

编辑2

但根据:https://carbonrmp.com/knowledge-hub/tech-engineering/athena-vs-spark-lessons-from-implementing-a-fully-managed-query-system/

Presto是为低延迟而设计的,它使用了一种快速的大规模并行处理(MPP(方法,但需要同时在内存中进行所有操作。要么全有要么全无,如果内存不足,那么"以这个比例因子查询耗尽的资源"。Spark是为可扩展性而设计的,并遵循map reduce设计[1]。作业被拆分并按块进行处理,这些块通常是分批处理的。如果您在不更改资源的情况下将工作负载增加一倍,那么它应该需要两倍的时间,而不是失败[2]

所以Athena(又名Presto(没有我想要的那么多可扩展性。我看到了";以该比例因子查询耗尽的资源";我的案子。

是否有可能将文件类型更改为类似镶木地板的柱状格式?然后您可以使用AWS EMR,spark应该能够轻松处理连接。显然,您需要根据数据/集群大小等来优化查询。

最新更新