Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拥有对象列表,如何使用mapReduce将单个对象传递给每个映射器类?_Java_Hadoop_Mapreduce - Fatal编程技术网

Java 拥有对象列表,如何使用mapReduce将单个对象传递给每个映射器类?

Java 拥有对象列表,如何使用mapReduce将单个对象传递给每个映射器类?,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,关于WordCount示例的两个问题: 如果我在示例中理解正确: 主类接收一个输入文件(第57行) 每个映射程序都会收到该文件的一行(第22行) 我正在尝试做一些不同的事情: 而不是将输入文件传递给主类, 假设我的主类有一个对象列表 例如:列表转换事务列表 我希望每个映射程序都能收到此列表中的单个项目: 在我的例子中:转换单Trans 我该怎么做呢?关于你的第一个问题: 是的,第57行添加要传递给作业的第一个参数作为作业的输入。然后,它将启动N映射程序,每个映射程序将收到输入文件的分割。查看有

关于WordCount示例的两个问题:

  • 如果我在示例中理解正确: 主类接收一个输入文件(第57行) 每个映射程序都会收到该文件的一行(第22行)

  • 我正在尝试做一些不同的事情: 而不是将输入文件传递给主类, 假设我的主类有一个对象列表

  • 例如:列表转换事务列表

    我希望每个映射程序都能收到此列表中的单个项目:

    在我的例子中:转换单Trans


    我该怎么做呢?

    关于你的第一个问题:

    是的,第57行添加要传递给作业的第一个参数作为作业的输入。然后,它将启动
    N
    映射程序,每个映射程序将收到输入文件的分割。查看有关将启动多少映射程序的更多信息。默认情况下,Hadoop假设输入的每一行都包含一个键/值对(单个映射调用的输入)

    关于你的第二个问题:

    您不能将Java对象作为输入传递给您的作业,因为Hadoop无法从内存中读取输入。要将对象列表作为输入,首先需要使用某种文本表示或序列化格式(例如或)将对象写入磁盘上的文件。然后可以将此文件用作输入,并在映射函数中对其进行反序列化

    或者,您可以定义自己的,在读取数据时反序列化数据,然后将实际对象提供给映射器