在EMR中预处理数据

时间:2016-06-16 03:04:04

标签: mapreduce emr amazon-emr

我想要破解10 PB数据。输入数据采用某种专有格式(存储在S3中),第一个预处理步骤是将此专有数据转换为CSV并将其移回S3。由于一些限制,我无法将预处理步骤与Map任务相结合。这样做的正确方法是什么?

我计划使用AWS EMR。一种方法是在没有reduce任务的情况下运行单独的EMR作业,并在Map阶段将数据上传到S3。有没有更好的方法可以做到这一点,因为运行map-reduce作业而不减少预处理数据的任务就像是一个hacky解决方案。

1 个答案:

答案 0 :(得分:1)

看起来你至少有两个选择:

  1. 将数据转换为您更容易使用的格式。您可能希望查看ParquetAvro等格式。为此使用仅限地图的任务是一种合适的方法,如果你想控制生成的文件数量,你只能在这种情况下使用reducer,即将大量小文件组合成一个较大的文件。
  2. 创建自定义InputFormat并直接读取数据。关于如何做到这一点,网上有很多资源。根据专有格式的外观,您可能需要这样做以实现#1。
  3. 您需要考虑的一些事情是:

    1. 与其他格式相比,专有格式空间是否有效?
    2. 使用格式有多容易,将其变成CSV会使您的处理工作更简单吗?
    3. 原始数据是否曾经更新或添加,您是否需要将其转换为其他格式或更新已转换的数据?