Java 使用Hadoop流和新API文件格式时找不到类

Java 使用Hadoop流和新API文件格式时找不到类,java,python,hadoop,streaming,Java,Python,Hadoop,Streaming,当使用带有新API和自定义(java)out格式或(java)Reducer类的Hadoop python流时,会出现“未找到”问题。然而,同样的方法也适用于旧的API i、 e。 以下命令行参数可用于旧api的文件,但在新api中存在问题 -inputformat JavaClassName -outputformat JavaClassName -partitioner JavaClassName -combiner streamingCommand or JavaC

当使用带有新API和自定义(java)out格式或(java)Reducer类的Hadoop python流时,会出现“未找到”问题。然而,同样的方法也适用于旧的API

i、 e。 以下命令行参数可用于旧api的文件,但在新api中存在问题

   -inputformat JavaClassName
   -outputformat JavaClassName
   -partitioner JavaClassName
   -combiner streamingCommand or JavaClassNam
例如,如果您查看这篇博文:如果您试图用新的multipleoutput(reducer)实现这一点,我在本地Hadoop和AWS EMR中遇到了问题


有什么想法吗

看起来缺少-libjars选项。指定jar,其中包含自定义格式和自定义分区器以及-libjars选项。在执行HADOOP命令之前,还可以在环境变量HADOOP_CLASSPATH中设置新创建的jar,如下所示

export-HADOOP\u CLASSPATH=${HADOOP\u CLASSPATH}:Path-Custom-Format.jar

True,请参阅

在使用hadoop-streaming-2.6.0.jar时,我遇到了定制分区器类的同样困难。我让它工作了

  • 导入org.apache.hadoop.mapred包,而不是相应的mapreduce包
  • 实现分区器接口,而不是扩展分区器类
  • 我猜,这和旧的api是一样的