Java 如何将数组访问到映射器中?

Java 如何将数组访问到映射器中?,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,我是MapReduce编程的新手,在我的第一个MR代码中,我有一个问题。在我的映射器中,我需要访问在主类中映射器之前创建和填充的2D数组。我怎样才能访问它?我应该将其导出为txt并尝试在映射器中读取它吗?如果是这样,应该如何将其插入mapper?我不知道我应该如何提供它?我的代码是用Java编写的。您可以用两种方法来完成这项工作 创建2D数组后,可以将该文件加载到HDFS中,然后使用Java M/R API中的DistributedCache访问mapper/reducer代码中的数据。看看这个

我是MapReduce编程的新手,在我的第一个MR代码中,我有一个问题。在我的映射器中,我需要访问在主类中映射器之前创建和填充的2D数组。我怎样才能访问它?我应该将其导出为txt并尝试在映射器中读取它吗?如果是这样,应该如何将其插入mapper?我不知道我应该如何提供它?我的代码是用Java编写的。

您可以用两种方法来完成这项工作

  • 创建2D数组后,可以将该文件加载到HDFS中,然后使用Java M/R API中的DistributedCache访问mapper/reducer代码中的数据。看看这个:

  • 如果您的数据不是太大,并且您有一个表示该数据的对象,该对象可序列化且非常小,那么您可以通过作业配置传递它。序列化它,并在配置中包含它的base64编码版本。然后可以在mapper/reducer:,java.lang.String)中访问此数据