SpringBoot que ejecuta el complemento de empaquetado del programa MapReduce hace que la clase no se encuentre problema

Estructura del programa

Inserte la descripción de la imagen aquí
Descripción: Una estructura de botas de resorte muy común.

uso del complemento de empaquetado de archivos pom

<build>
<plugins>
    <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <fork>true</fork>
            <mainClass>com.example.springbootintegrationtest.hadoop.mapreduce.WordCountDriver</mainClass>
        </configuration>
        <executions>
            <execution>
                <goals>
                    <goal>repackage</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>
</build>

Descripción: está en modo mainClass, pero no este complemento

Descomprima para ver la estructura del tarro

Inserte la descripción de la imagen aquí
Nota: Esta es la estructura del paquete predeterminado de springboot. Se ejecuta como un jar normal. De forma predeterminada, se encuentra en org, y nuestro código de programa WordCount está en BOOT_INF, por lo que no se puede encontrar la clase

Informar de error (no se pudieron encontrar las clases de mapa y reducción)

Inserte la descripción de la imagen aquí
Descripción: use hadoop jar para ejecutar el error y no se puede encontrar la clase

Utilice el complemento empaquetado en el caso oficial de hadoop

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>com.example.springbootintegrationtest.hadoop.mapreduce.WordCountDriver
                        </mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <configuration>
                <findbugsXmlOutput>true</findbugsXmlOutput>
                <xmlOutput>true</xmlOutput>
                <effort>Max</effort>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.rat</groupId>
            <artifactId>apache-rat-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Descripción: Es org.apache.maven.plugins

Use mvn install para ver la estructura del directorio

Inserte la descripción de la imagen aquí
Nota: sus clases relacionadas con wordCount están todas en el paquete com

Ver resultados de ejecución

Inserte la descripción de la imagen aquí
Descripción: ejecutar el trabajo mapreduce correctamente

para resumir

Si no puede encontrar el problema, debe ir al sitio web oficial para encontrarlo. Busqué durante 8 horas y, finalmente, solo consulte el ejemplo oficial.

Supongo que te gusta

Origin blog.csdn.net/weixin_38312719/article/details/115060411
Recomendado
Clasificación