【问题标题】:Using map reduce to perform address validation in dataset使用 map reduce 在数据集中进行地址验证
【发布时间】:2019-08-05 16:24:30
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 我添加了hadoop 标签,因为它应该比其他标签吸引更多的关注。

标签: validation hadoop parallel-processing mapreduce


【解决方案1】:

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

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

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

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

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

说了这么多,如果我要这样做,我肯定会使用 Apache Spark 而不是 MapReduce。

【讨论】:

  • 感谢您的回复!所以如果我做对了,在地址到国家关联步骤之后,我不需要做一个减少来验证?
  • 不,这里不需要 Reduce。只需在查找国家/地区后在 Mapper 中进行验证。如果您需要比较/聚合相似的记录,您只需要减少,但在您的情况下,每条记录都是独立处理的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 2014-04-09
  • 1970-01-01
相关资源
最近更新 更多