We've an application where output operator is writing to Cassandra. During recent upgrade to Cassandra ( 2.3->3.0) , we realized that Cassandra mandates the Guava library version > 16.01. While I notice that Cassandra driver and both Malhar libraries references Guava 18.0. While unit test always worked fine, the app when running in yarn container keep referencing older guava version which is not compatible and resulted in failing. I tried to exclude Guava from every dependency in maven and included Guava as direct dependency to avoid any conflict. But none of this helped.
While debugging more, I realized that logs prints the classpath and 'grep guava' on loaded classpath libs shows the following ... ./guava-18.0.jar /usr/lib/hadoop/lib/guava-11.0.2.jar /usr/lib/hadoop-hdfs/lib/guava-11.0.2.jar /usr/lib/hadoop-yarn/lib/guava-11.0.2.jar So I am guessing it's trying to use 11.0.2 version which appears to be coming from Hadoop class path and it's not in my control. I found very similar issue discussed for other yarn applications. https://discuss.elastic.co/t/how-to-fix-guava-version-conflicts-with-hadoop-yarn-classpath/45384/2 Anyone has faced such issue ? Is there a settings / configuration in apex to enforce an alternate Classpath ? E.g. Similar to setting mapreduce.job.user.classpath.first to true Any pointers to resolve this ? Thanks, Sunil
