2016-02-29 161 views
2

我有一個運行在YARN中的Spark應用程序。應用程序中的一個依賴項需要httpclient 4.5.1。我明確將其作爲對我的pom的依賴。 但是,當我在YARN中運行應用程序。我得到以下堆棧跟蹤spark和httpclient依賴關係

Factory method 'createClient' threw exception; nested exception is java.lang.NoSuchMethodError: org.apache.http.impl.conn.PoolingHttpClientConnectionManager.setValidateAfterInactivity(I)V 
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) 

看起來像Spark的依賴性問題。有沒有什麼辦法可以覆蓋httpclient?

回答

1

我所用的解決方法是與標誌 spark.executor.userClassPathFirst =真

這固定我的問題運行紗線火花應用。

+0

這對我沒有用,導致其他東西被炸。 – lockwobr

+0

你救了我。謝謝! – Aliza

0

看來這個方法was added in httpclient 4.4。運行報告爲java.lang.NoSuchMethodError的事實意味着您的班級正在Spark平臺上找到此班級的另一個版本(PoolingHttpClientConnectionManager)。也許Apache的另一個版本的客戶端與Spark捆綁在一起?

我建議你使用Maven shade plugin創建一個獨立的應用程序,以便它(希望)可以使用它所需的類和JAR。

+0

Spark組裝jar具有較舊版本的httpclient。 – drgnrbrn