validation - 使用 map reduce 在数据集中执行地址验证

标签 validation hadoop parallel-processing mapreduce

我有一个数据集,其中包含来自全局 150 个国家/地区的地址,您的任务是验证它们,数据存储在 3 个字段中 - 地址行、城市、邮政编码。我还有可用的每个国家的地址验证解决方案,但数据集不包括国家代码。任务是设计逻辑来处理数据并为每条记录找到国家/地区,以便它们可以通过验证组件运行。什么是最有效的方法。

由于对每条记录运行所有 150 个地址验证组件被认为效率不高,我正在考虑并行处理和使用 map reduce。我的逻辑是这样的:

一个可能的解决方案需要分布式方法和 map/reduce 框架中的并行处理,例如:

  • 可以将数据集分成相等的“ block ”,每个国家/地区将在不同集群上并行处理。

  • 在每个 block 上运行的映射函数可以将每个地址映射到其各自的国家代码。

  • 洗牌阶段将按国家汇总映射器函数的所有输出
  • 最后,在每个国家 block 上运行的 reduce 函数将验证各自国家的地址,结果只有每个国家的有效地址。

我不知道这是否有意义,或者是否有可能使用 map/reduce 实现此功能。我之所以想到这个解决方案,是因为我记得我们上过一些关于云计算、并行处理和大数据的类(class)。任何建议或不同的方法都非常受欢迎……这是为了面试,谢谢……

最佳答案

MapReduce 可用于组合大型数据集,但在您的情况下,您有一个大型数据集(地址)和一个小型数据集(国家/地区)。在这种情况下,仅 Map 的 MapReduce 作业就可以了,您可以执行以下操作:

  1. 读取地址数据集作为您的 Mapper 输入。

  2. 使用 MapReduce 的 cache functionality 将国家数据集读入内存(例如作为 HashMap) .

  3. 在处理每个地址记录时对其进行 HashMap 查找,以将其与其国家相关联。

  4. 应用您的验证逻辑和输出。

话虽如此,如果我要这样做,我肯定会使用 Apache Spark 而不是 MapReduce。

关于validation - 使用 map reduce 在数据集中执行地址验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57341638/

相关文章:

kotlin - Kotlin:在列表 “in parallel”上应用暂停功能?

html - Angular 2 中的验证

hadoop - 如何使用色调在配置单元中传递变量

R doParallel foreach 为独立 worker 提供错误处理

c# - Parallel.ForEach over AuthorizationRuleCollection

java - 为什么会收到此异常java.lang.NoClassDefFoundError?

database - 在哪里执行桌面应用程序的数据验证?在数据库中还是在代码中?

javascript - ASP.NET CustomValidator 不工作,始终返回 True

javascript - 以编程方式选择文本输入字段内的部分

hadoop - 如何从Yahoo PigLatin UDF内将文件加载到DataBag中?