Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.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 如何将对象从客户端传递到Map和Reduce?_Java_Hadoop_Mapreduce - Fatal编程技术网

Java 如何将对象从客户端传递到Map和Reduce?

Java 如何将对象从客户端传递到Map和Reduce?,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,该类是否应该扩展ObjectWritable类?那么,如何将它从客户端传递到映射并减少?谢谢我想您的意思是将一个对象从客户端代码传递到映射器和还原器 您必须使用某种形式的序列化来实现这一点,因为数据是通过网络传输的。根据您的场景,有几种可能性: 最好的解决方案可能是在映射器/还原器中实例化对象。要传递构造函数调用所需的信息,可以使用作业配置 conf.setInt("foo", 32); conf.set("bar", "bazz"); 如果您的对象是可序列化的且非常小,则可以序列化它,并在

该类是否应该扩展ObjectWritable类?那么,如何将它从客户端传递到映射并减少?谢谢

我想您的意思是将一个对象从客户端代码传递到映射器和还原器

您必须使用某种形式的序列化来实现这一点,因为数据是通过网络传输的。根据您的场景,有几种可能性:

  • 最好的解决方案可能是在映射器/还原器中实例化对象。要传递构造函数调用所需的信息,可以使用作业配置

    conf.setInt("foo", 32);
    conf.set("bar", "bazz");
    
  • 如果您的对象是可序列化的且非常小,则可以序列化它,并在JobConf中包含它的base64编码版本

  • 如果序列化对象太大,则可以使用分布式缓存:
  • 在比较Hadoop可以使用的不同序列化框架时检查这一点。如果对象很大,也可以考虑压缩。