Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.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-Maven(它是如何工作的?)_Java_Maven_Mapreduce - Fatal编程技术网

Java MapReduce-Maven(它是如何工作的?)

Java MapReduce-Maven(它是如何工作的?),java,maven,mapreduce,Java,Maven,Mapreduce,我不熟悉Maven和Java。我在Eclipse中创建了一个简单的MapReduce程序,并使用maven指定依赖项。(我在POM.XML中指定了hadoop依赖项)。它下载了所有依赖项,我可以在maven依赖项中看到它们。然后我创建了一个JAR并在集群中运行它。一切正常。但是当我解压JAR文件时,在我的JAR中没有看到任何来自Hadoop的依赖JAR?那么我很困惑它是如何工作的?据我所知,你们需要分发所有的罐子。请教我 谢谢, John要构建包含依赖项的jar,您必须配置maven汇编插件。看

我不熟悉Maven和Java。我在Eclipse中创建了一个简单的MapReduce程序,并使用maven指定依赖项。(我在POM.XML中指定了hadoop依赖项)。它下载了所有依赖项,我可以在maven依赖项中看到它们。然后我创建了一个JAR并在集群中运行它。一切正常。但是当我解压JAR文件时,在我的JAR中没有看到任何来自Hadoop的依赖JAR?那么我很困惑它是如何工作的?据我所知,你们需要分发所有的罐子。请教我

谢谢,
John

要构建包含依赖项的jar,您必须配置
maven汇编插件
。看看这个:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <goals>
          <goal>attached</goal>
        </goals>
        <phase>package</phase>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <mainClass>com.example.package.MainClass</mainClass>
            </manifest>
            <manifestEntries>
              <Source-Version>${build-version}</Source-Version>
            </manifestEntries>
          </archive>
        </configuration>
      </execution>
    </executions>
  </plugin>
</plugins>

org.apache.maven.plugins
maven汇编插件
附属的
包裹
带有依赖项的jar
com.example.package.MainClass
${build version}

Hadoop在使用Hadoop\u类路径中指定的位置运行作业时加载jar文件

它位于conf/hadoop_env.sh文件中:

# Extra Java CLASSPATH elements.  Optional.
# export HADOOP_CLASSPATH="<extra_entries>:$HADOOP_CLASSPATH"
#额外的Java类路径元素。可选。
#导出HADOOP_类路径=“:$HADOOP_类路径”

实际上这要看情况而定。如果您计划分发一个JAR,那么,是的,您需要一个带有依赖项的JAR。如果您可以区分maven工件,那么工件的依赖关系由maven自动处理。这就是为什么我感到困惑?