如何在maven中为hadoop wordcount提供参数

ecfsfe2w  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(348)

我在做hadoop WordCount.java 在日 eclipse 中。
我将输入和输出路径作为参数。
我正在尝试将hadoop mr从eclipsejuno转换为maven。
我写了pom.xml。但是我应该在哪里包括我的参数呢?
input: /home/sree/myfiles/book.txt output: /home/sree/myfiles/wcout 我的编辑 pom.xml ```

4.0.0
TryMaven
TryMaven
0.0.1-SNAPSHOT

    <sourceDirectory>src</sourceDirectory>
    <resources>
        <resource>
            <directory>src</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>org.WordCount</mainClass>

                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2.1</version>
            <configuration>
                <arguments>
                    <argument>-Dinput=${input}</argument>
                    <argument>-Doutput=${output}</argument>
                    <mainClass>org.WordCount</mainClass>
                </arguments>
                <mainClass>org.WordCount</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

<repositories>

    <repository>
        <id>sonatype-nexus-snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>1.2.1</version>
    </dependency>
</dependencies>
7gcisfzg

7gcisfzg1#

maven项目是构建工具,在迁移到maven之后,您仍然可以像以前一样运行您的程序。这与maven无关。

java解决方案

你完全可以不用maven运行wordcount

java -jar target/TryMaven-0.0.1-SNAPSHOT.jar -Dinput=/home/sree/myfiles/book.txt -Doutput=/home/sree/myfiles/wcout

maven解决方案

对pom.xml的更改

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <configuration>
        <executable>java</executable>
        <arguments>
            <argument>-Dinput=${input}</argument>
            <argument>-Doutput=${output}</argument>

            <argument>-classpath</argument>
            <classpath/>

            <mainClass>org.WordCount</mainClass>
        </arguments>
    </configuration>
</plugin>

用命令执行

mvn exec:exec -Dinput=/home/sree/myfiles/book.txt -Doutput=/home/sree/myfiles/wcout

您可以直接从eclipse执行这个目标! Run as -> Maven bulid 并明确目标 exec:exec 具有所需参数

相关问题