'UnsatisfiedLinkError' when executing a Job that uses a tMapRStreamsInput component

Problem Description

When running a Talend 6.3.1 standard Job that uses a tMapRStreamsInput component against MapR 5.2 Hadoop cluster, it fails with the following error:

[FATAL]: testtc.lect_stdt_mapr_stream_0_1.lect_stdt_mapr_stream - tMapRStreamsInput_1 Error occurred while instantiating com.mapr.streams.impl.listener.MarlinListener.
java.lang.UnsatisfiedLinkError: com.mapr.fs.jni.MarlinJniListener.OpenListener(Ljava/lang/String;Ljava/lang/String;IZZJJIIILjava/lang/String;Ljava/lang/String;JZ)J.
Exception in component tMapRStreamsInput_1
..
java.lang.RuntimeException: Error occurred while instantiating com.mapr.streams.impl.listener.MarlinListener.
java.lang.UnsatisfiedLinkError: com.mapr.fs.jni.MarlinJniListener.OpenListener(Ljava/lang/String;Ljava/lang/String;IZZJJIIILjava/lang/String;Ljava/lang/String;JZ)J.
at org.apache.kafka.clients.mapr.GenericHFactory.getImplementorInstance(GenericHFactory.java:41)
at org.apache.kafka.clients.consumer.KafkaConsumer.initializeConsumer(KafkaConsumer.java:591)
at org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(KafkaConsumer.java:902)
at org.apache.kafka.clients.consumer.KafkaConsumer.subscribe(KafkaConsumer.java:949)
at testtc.lect_stdt_mapr_stream_0_1.lect_stdt_mapr_stream.tMapRStreamsInput_1Process(lect_stdt_mapr_stream.java:1312)

 

Root Cause

The Job has a dependency on a user routine, delete_maprdb, that depends on a Java library, fat-hbase-client-0.0.1-SNAPSHOT-jar-with-dependencies.jar. This Java library is used when running the Job and provides classes, overriding classes imported by Talend, that are not compatible with the C native library of MapR 2.5.

 

routine.pngRoutine delete_maprdb libraries > fat-hbase-client-0.0.1-SNAPSHOT-jar-with-dependencies.jar

 

Solution

Configure the Job so that it does not use the routine, delete_maprdb, that needs the fat-hbase-client-0.0.1-SNAPSHOT-jar-with-dependencies.jar user library.

 

To implement this solution, perform the following steps:

  1. From Studio, right-click your Job.

  2. Select Setup routine dependencies.

  3. Select the routine you want to delete, in this case, delete_maprdb.

  4. Click the red X. Click OK.

    steps.pngDeleting User routines

Version history
Revision #:
13 of 13
Last update:
‎02-25-2019 01:09 AM
Updated by:
 
Comments
Employee

Nice Article