【问题标题】:MapReduce: How to pass HashMap to mappersMapReduce:如何将 HashMap 传递给映射器
【发布时间】:2017-07-05 10:47:08
【问题描述】:

我正在设计新一代分析系统,该系统需要近乎实时地处理来自许多传感器的许多事件。为此,我想使用大数据分析平台之一,例如 HadoopSpark StreamingFlink

为了分析每个事件,我需要使用表 (DB) 中的一些元数据,或者至少将其加载到缓存地图中。

问题是每个映射器都将在多个节点上并行化。

所以我有两件事要处理:

  • 首先,如何将 HashMap 加载/传递给映射器?
  • 有什么方法可以让映射器之间的 HashMap 保持一致?

【问题讨论】:

  • DistributedCache 是您正在寻找的 - stackoverflow.com/questions/21239722/…。您可以将元数据文件提供给所有映射器。
  • 您也可以通过查询您的数据库,在每个映射器的setup() 方法中构建哈希映射。
  • 您将使用 Hadoop 还是 Spark?解决方案可能完全不同。此外,您是否需要每个映射器都拥有相同的信息,还是每个映射器都特定?

标签: java hadoop apache-spark mapreduce spark-streaming


【解决方案1】:

将 HashMap 结构序列化为文件,将其存储在 HDFS 中,并在 MapReduce 作业配置阶段使用DistributedCache 将带有序列化 HashMap 的文件传播到所有映射器。然后在映射阶段,每个映射器都可以读取文件,反序列化,然后访问这个 HashMap。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多