2016-10-17 2 views
1

Я отправил свою банку с зависимостями, чтобы искра, используя искру-submit. В основном методе моей баночки я хочу создать HttpAsyncCliens экземпляр и выполнить некоторый запрос (клиентскую библиотеку Apache HTTP асинхронной):NoSuchMethodError in spark submit

val httpClient = HttpAsyncClients.custom.setMaxConnTotal(10).setMaxConnPerRoute(10).build 
httpClient.start() 
httpClient.execute(new HttpGet("https://google.com"), new FutureCallback[HttpResponse] { 
    /* callbacks */ 
}) 

Он бросает исключение:

Exception in thread "pool-1-thread-1" java.lang.NoSuchMethodError: org.apache.http.util.Asserts.check(ZLjava/lang/String;Ljava/lang/Object;)V at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:315) at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.execute(PoolingNHttpClientConnectionManager.java:191) at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase$1.run(CloseableHttpAsyncClientBase.java:64) at java.lang.Thread.run(Thread.java:745) Exception in thread "main" java.lang.NoSuchMethodError: org.apache.http.util.Asserts.check(ZLjava/lang/String;Ljava/lang/Object;)V at org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.ensureRunning(CloseableHttpAsyncClientBase.java:90) at org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:123) at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:74) at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:107) at org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:91) at spark.Application$.main(Application.scala:37) at spark.Application.main(Application.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:731) at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181) at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206) at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121) at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

Похоже, что Eсть нет http- ядро зависимость в моем банке, но я могу назвать этот метод (org.apache.http.util.Asserts.check(ZLjava/lang/String;Ljava/lang/Object;)V) в коде до или после создания HTTP клиента и запрос:

org.apache.http.util.Asserts.check(true, "test", "test2") // it produces no exception 

val httpClient = HttpAsyncClients.custom.setMaxConnTotal(10).setMaxConnPerRoute(10).build 
httpClient.start() 
httpClient.execute(new HttpGet("https://google.com"), new FutureCallback[HttpResponse] { 
    /* callbacks */ 
}) // it produces exception 

Почему я получил NoSuchMethodErr или если я могу вызвать этот метод из одного класса в коде?

Apache httpasyncclient v4.1

ответ

1

Решение здесь для синхронизации с версией httpcomponents.httpcore, которая находится в непосредственной пути к классам искры. Для версии 1.6 версия 4.0.1.

Вам нужно будет распаковать искр, чтобы просмотреть META-INF и т. Д. После некоторых детективных работ все будет в порядке!

Смежные вопросы