Using Apache Tez in combination with Hive or Pig we *sometimes* encounter
error messages similar to the following ones:

Caused by: java.lang.NoSuchMethodError:
com.google.common.base.Splitter.splitToList(Ljava/lang/CharSequence;)
Caused by: java.lang.NoSuchMethodError:
com.google.common.base.Stopwatch.elapsedTime(Ljava/util/concurrent/TimeUnit;)

The origin of this problem is that multiple Google Guava jars with
different versions exist on the classpath.
The most ancient version (11.0.2) comes with several Hadoop components (see
also https://issues.apache.org/jira/browse/HADOOP-10101). Our own code uses
a more up-to-date version.

When using Apache Tez, the composition of the classpath seems to be random.
Therefore sometimes an old Guava version lacking modern methods is found
first on the classpath leading to the exception listed above.

My question is the following one: are there any techniques or Tez options
steering the classpath composition, perhaps similar to
mapreduce.job.user.classpath.first?

We are using CDH 5.4.5.

Thank you very much in advance.

Reply via email to