Hi Yuri!

Flink should hide Hadoop's Guava, to avoid this issue.

Did you build Flink yourself from source? Maybe you are affected by this
issue:
https://ci.apache.org/projects/flink/flink-docs-release-1.2/setup/building.html#dependency-shading

Stephan


On Thu, Dec 15, 2016 at 11:18 AM, Kidong Lee <mykid...@gmail.com> wrote:

> To avoid guava conflict, I use maven shade plugin to package my fat jar.
> If you use maven, the shade plugin looks like this:
> ...
>
> <plugin>
>    <groupId>org.apache.maven.plugins</groupId>
>    <artifactId>maven-shade-plugin</artifactId>
>    <version>2.4.2</version>
>    <configuration>
>       <createDependencyReducedPom>false</createDependencyReducedPom>
>       <shadedArtifactAttached>true</shadedArtifactAttached>
>       <shadedClassifierName>flink-job</shadedClassifierName>
>       <relocations>
>          <relocation>
>             <pattern>com.google</pattern>
>             <shadedPattern>yourpackage.shaded.google</shadedPattern>
>          </relocation>
>       </relocations>
>       <transformers>
>          <transformer 
> implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
>          <transformer 
> implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
>             <resource>META-INF/spring.handlers</resource>
>          </transformer>
>          <transformer 
> implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
>             <resource>META-INF/spring.schemas</resource>
>          </transformer>
>       </transformers>
>       <filters>
>          <filter>
>             <artifact>*:*</artifact>
>             <excludes>
>                <exclude>org/datanucleus/**</exclude>
>                <exclude>META-INF/*.SF</exclude>
>                <exclude>META-INF/*.DSA</exclude>
>                <exclude>META-INF/*.RSA</exclude>
>             </excludes>
>          </filter>
>       </filters>
>    </configuration>
> </plugin>
> ...
>
>
> To package fat jar:
>
> mvn -e -DskipTests=true clean install shade:shade;
>
>
> I hope, it helps.
>
> - Kidong Lee.
>
>
>
>
>
> 2016-12-15 19:04 GMT+09:00 Yury Ruchin <yuri.ruc...@gmail.com>:
>
>> Hi,
>>
>> I have run into a classpath issue when running Flink streaming job in
>> YARN session. I package my app into a fat jar with all the dependencies
>> needed. One of them is Google Guava. I then submit the jar to the session.
>> The task managers pre-created by the session build their classpath from the
>> FLINK_LIB_DIR and Hadoop / YARN lib directories. Unfortunately, there is a
>> dated Guava version pulled along with Hadoop dependencies which conflicts
>> with the version my app needs. Even worse, the Flink lib dir and Hadoop
>> libraries take precedence over my jar.
>>
>> If I remember correctly, in Spark there is an option meaning "user
>> classpath goes first when looking for classes". I couldn't find anything
>> similar for Flink. I tried "flink run -C file:///path/to/my/libraries" in
>> the hope to extend the classpath but the old Guava version takes precedence
>> anyway.
>>
>> How else can I bump "priority" of my app jar during the load process?
>>
>> Thanks,
>> Yury
>>
>
>

Reply via email to