Zmieniam mapę hadoopów - zmniejsz liczbę zadań, które obecnie kompilują i działają bez moich zmian.Hadoop throwing java.lang.VerifyError po wyeksportowaniu pliku JAR
W ramach pracy będę teraz łączyć się z S3, aby dostarczyć plik.
Opracowałem (bardzo prostą) klasę s3Connector, przetestowałem i uruchomiłem ją w czasie zaćmienia, , a następnie podłączyłem ją do mojej pracy redukującej. Aby uruchomić zadanie w hadoopie, muszę wyeksportować projekt jako plik jar, a następnie wywołać go z hadoop. Plik jar wydaje się kompilować i eksportować bez problemu z zaćmienia, ale gdy uruchomię go w hadoop, otrzymuję wyjątek java.lang.VerifyError.
java.lang.VerifyError: (class: com/extrabux/services/S3Connector, method:
connectToS3 signature:()V) Incompatible argument to function
Kilka innych stanowisk wspomnieć, że nie może być w wersji jar zależności, które są sprzeczne, ale w moim Zaćmienie ścieżki budowania, dodałem wszystkie najnowsze pliki jar dla określonych bibliotekami i pchnął je do górnej części kompilacji kolejność ścieżek.
To jest tak proste, jak mogę odizolować go do:
import org.jets3t.service.impl.rest.httpclient.RestS3Service;
import org.jets3t.service.security.AWSCredentials;
public class S3Connector {
protected RestS3Service s3Service;
protected AWSCredentials awsCredentials;
public S3Connector()
{
this.awsCredentials= new AWSCredentials("my secret 1", "my secret 2");
}
public void connectToS3() throws Exception
{
this.s3Service = new RestS3Service(this.awsCredentials);
}
}
Nawet takie proste klasy umrze .. sam komunikat. Jak tylko skomentuję dane uwierzytelniające AWS w konstruktorze i RestS3Service, problem zniknie. Zasadniczo, myślę, że to jakiś problem eksportu biblioteki z zaćmienia, ale nie wiem, jak go znaleźć.
dzięki za ogłoszenie odpowiedzi! uratował mój dzień :) – vkris
Krok dalej, kiedy wprowadziłem do AWS, znalazłem, że Amazon zainstalowany hadoop używa biblioteki 0.7.x .. Mam nadzieję, że to też pomaga, jeśli używasz hadoop firmy Amazon. – Zak
Używam usługi hadoop Amazon. Mam ten sam problem, ale nawet jeśli usunąłem plik jets3t-0.6.0.jar w lib /, to nadal nie działa. Widziałem twoje komentarze. Masz na myśli, że powinniśmy używać wersji 0.7.0 zamiast 0.8.0? – user571470