That’s good to hear :)

Unfortunately at this moment dependencies can pollute class path in both ways 
(Flink’s can mess with user’s application and also the other way around).

Cheers, Piotrek

> On 20 Oct 2017, at 15:11, r. r. <rob...@abv.bg> wrote:
> 
> By Ali Baba's beard and his forty bandits, Piotrek, this worked!
> My understanding was that I have to prevent Flink from loading the older 
> compress.jar and force the newer one.
> One I shade-relocated org.apache.commons.compress for my project the problem 
> went away
> 
> Many thanks!
> 
> 
> 
> 
> 
> 
>> -------- Оригинално писмо --------
> 
>> От: Piotr Nowojski pi...@data-artisans.com
> 
>> Относно: Re: java.lang.NoSuchMethodError and dependencies problem
> 
>> До: "r. r." <rob...@abv.bg>
> 
>> Изпратено на: 20.10.2017 14:46
> 
> 
> 
> 
>> But you said
> 
>> 
> 
>>> this seems to work as mvn dependency:tree -Ddetail=true only shows 1.14
> 
>> 
> 
>> To avoid this error that you describe I think that you have to ensure, that 
>> no 1.14 commons-compress comes from your application, because it can 
>> conflict with 1.4.1 used by flink cluster.
> 
>> 
> 
>> By shading I meant that you could shade/relocate 1.14 usages in your 
>> application, so that they don’t collide with Flink’s 1.4.1.
> 
>> 
> 
>> Piotrek
> 
>> 
> 
>>> On 19 Oct 2017, at 19:58, r. r. <rob...@abv.bg> wrote:
> 
>>> 
> 
>>> Thanks, Piotr
> 
>>> but my app code is self-contained in a fat-jar with maven-shade, so why 
>>> would the class path affect this?
> 
>>> 
> 
>>> by shade commons-compress do you mean :
> 
>>> <!-- <exclude>org.apache.commons:commons-compress</exclude> -->
> 
>>> it doesn't have effect either
> 
>>> 
> 
>>> as a last resort i may try to rebuild Flink to use 1.14, but don't want to 
>>> go there yet =/
> 
>>> 
> 
>>> 
> 
>>> Best regards
> 
>>> 
> 
>>> 
> 
>>> 
> 
>>> 
> 
>>> 
> 
>>> 
> 
>>>> -------- Оригинално писмо --------
> 
>>> 
> 
>>>> От: Piotr Nowojski pi...@data-artisans.com
> 
>>> 
> 
>>>> Относно: Re: java.lang.NoSuchMethodError and dependencies problem
> 
>>> 
> 
>>>> До: "r. r." <rob...@abv.bg>
> 
>>> 
> 
>>>> Изпратено на: 19.10.2017 20:04
> 
>>> 
> 
>>> 
> 
>>> 
> 
>>> 
> 
>>>> I’m not 100% sure, so treat my answer with a grain of salt.
> 
>>> 
> 
>>>> 
> 
>>> 
> 
>>>> I think when you start the cluster this way, dependencies (some? all?) are 
>>>> being loaded to the class path before loading user’s application. At that 
>>>> point, it doesn’t matter whether you have excluded commons-compress 1.4.1 
>>>> in yours application pom.xml. I’m not sure if this is solvable in some 
>>>> way, or not.
> 
>>> 
> 
>>>> 
> 
>>> 
> 
>>>> Maybe as a walk around, you could shade commons-compress usages in your 
>>>> pom.xml?
> 
>>> 
> 
>>>> 
> 
>>> 
> 
>>>> Piotr Nowojski
> 
>>> 
> 
>>>> 
> 
>>> 
> 
>>>>> On 19 Oct 2017, at 17:36, r. r. <rob...@abv.bg> wrote:
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> flink is started with bin/start-local.sh
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> there is no classpath variable in the environment; 
>>>>> flink/lib/flink-dist_2.11-1.3.2.jar contains commons-compress, still it 
>>>>> should be overridden by the dependencyManagement directive
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> here is the stacktrace:
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> The program finished with the following exception:
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> org.apache.flink.client.program.ProgramInvocationException: The program 
>>>>> execution failed: Job execution failed.
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:478)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.client.program.StandaloneClusterClient.submitJob(StandaloneClusterClient.java:105)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:442)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.api.environment.StreamContextEnvironment.execute(StreamContextEnvironment.java:73)
> 
>>> 
> 
>>>>>   at com.foot.semantic.flink.PipelineJob.main(PipelineJob.java:73)
> 
>>> 
> 
>>>>>   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 
>>> 
> 
>>>>>   at 
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 
>>> 
> 
>>>>>   at 
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 
>>> 
> 
>>>>>   at java.lang.reflect.Method.invoke(Method.java:497)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java:528)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java:419)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.client.program.ClusterClient.run(ClusterClient.java:381)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.client.CliFrontend.executeProgram(CliFrontend.java:838)
> 
>>> 
> 
>>>>>   at org.apache.flink.client.CliFrontend.run(CliFrontend.java:259)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.client.CliFrontend.parseParameters(CliFrontend.java:1086)
> 
>>> 
> 
>>>>>   at org.apache.flink.client.CliFrontend$2.call(CliFrontend.java:1133)
> 
>>> 
> 
>>>>>   at org.apache.flink.client.CliFrontend$2.call(CliFrontend.java:1130)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.runtime.security.HadoopSecurityContext$1.run(HadoopSecurityContext.java:43)
> 
>>> 
> 
>>>>>   at java.security.AccessController.doPrivileged(Native Method)
> 
>>> 
> 
>>>>>   at javax.security.auth.Subject.doAs(Subject.java:422)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.runtime.security.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:40)
> 
>>> 
> 
>>>>>   at org.apache.flink.client.CliFrontend.main(CliFrontend.java:1130)
> 
>>> 
> 
>>>>> Caused by: org.apache.flink.runtime.client.JobExecutionException: Job 
>>>>> execution failed.
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply$mcV$sp(JobManager.scala:933)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply(JobManager.scala:876)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.runtime.jobmanager.JobManager$$anonfun$handleMessage$1$$anonfun$applyOrElse$6.apply(JobManager.scala:876)
> 
>>> 
> 
>>>>>   at 
>>>>> scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
> 
>>> 
> 
>>>>>   at 
>>>>> scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
> 
>>> 
> 
>>>>>   at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40)
> 
>>> 
> 
>>>>>   at 
>>>>> akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397)
> 
>>> 
> 
>>>>>   at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
> 
>>> 
> 
>>>>>   at 
>>>>> scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
> 
>>> 
> 
>>>>>   at 
>>>>> scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
> 
>>> 
> 
>>>>>   at 
>>>>> scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
> 
>>> 
> 
>>>>> Caused by: java.lang.NoSuchMethodError: 
>>>>> org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava/io/InputStream;)Ljava/lang/String;
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.tika.parser.pkg.ZipContainerDetector.detectArchiveFormat(ZipContainerDetector.java:114)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.tika.parser.pkg.ZipContainerDetector.detect(ZipContainerDetector.java:85)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.tika.detect.CompositeDetector.detect(CompositeDetector.java:77)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:115)
> 
>>> 
> 
>>>>>   at 
>>>>> com.foot.semantic.gafe.flink.services.TikaService.parse(TikaService.java:83)
> 
>>> 
> 
>>>>>   at 
>>>>> com.foot.semantic.gafe.flink.services.TikaService.parse(TikaService.java:59)
> 
>>> 
> 
>>>>>   at com.foot.semantic.flink.uima.TikaReader.process(TikaReader.java:137)
> 
>>> 
> 
>>>>>   at com.foot.semantic.flink.uima.TikaReader.getNext(TikaReader.java:82)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.uima.fit.pipeline.SimplePipeline.runPipeline(SimplePipeline.java:175)
> 
>>> 
> 
>>>>>   at com.foot.semantic.flink.PipelineJob$1.map(PipelineJob.java:63)
> 
>>> 
> 
>>>>>   at com.foot.semantic.flink.PipelineJob$1.map(PipelineJob.java:37)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.api.operators.StreamMap.processElement(StreamMap.java:41)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.runtime.tasks.OperatorChain$CopyingChainingOutput.pushToOperator(OperatorChain.java:528)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.runtime.tasks.OperatorChain$CopyingChainingOutput.collect(OperatorChain.java:503)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.runtime.tasks.OperatorChain$CopyingChainingOutput.collect(OperatorChain.java:483)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.api.operators.AbstractStreamOperator$CountingOutput.collect(AbstractStreamOperator.java:891)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.api.operators.AbstractStreamOperator$CountingOutput.collect(AbstractStreamOperator.java:869)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.api.operators.StreamSourceContexts$NonTimestampContext.collect(StreamSourceContexts.java:103)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.api.operators.StreamSourceContexts$NonTimestampContext.collectWithTimestamp(StreamSourceContexts.java:110)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.connectors.kafka.internals.AbstractFetcher.emitRecordWithTimestamp(AbstractFetcher.java:269)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.connectors.kafka.internal.Kafka010Fetcher.emitRecord(Kafka010Fetcher.java:86)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.connectors.kafka.internal.Kafka09Fetcher.runFetchLoop(Kafka09Fetcher.java:152)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumerBase.run(FlinkKafkaConsumerBase.java:483)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:87)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.api.operators.StreamSource.run(StreamSource.java:55)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.runtime.tasks.SourceStreamTask.run(SourceStreamTask.java:95)
> 
>>> 
> 
>>>>>   at 
>>>>> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:263)
> 
>>> 
> 
>>>>>   at org.apache.flink.runtime.taskmanager.Task.run(Task.java:702)
> 
>>> 
> 
>>>>>   at java.lang.Thread.run(Thread.java:745)
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> -------- Оригинално писмо --------
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> От: Piotr Nowojski pi...@data-artisans.com
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> Относно: Re: java.lang.NoSuchMethodError and dependencies problem
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> До: "r. r." <rob...@abv.bg>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> Изпратено на: 19.10.2017 18:00
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> Hi,
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> What is the full stack trace of the error?
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> Are you sure that there is no commons-compresss somewhere in the 
>>>>>> classpath (like in the lib directory)? How are you running your Flink 
>>>>>> cluster?
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> Piotrek
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> On 19 Oct 2017, at 13:34, r. r. <rob...@abv.bg> wrote:
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> Hello
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> I have a job that runs an Apache Tika pipeline and it fails with 
>>>>>>> "Caused by: java.lang.NoSuchMethodError: 
>>>>>>> org.apache.commons.compress.archivers.ArchiveStreamFactory.detect(Ljava/io/InputStream;)Ljava/lang/String;"
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> Flink includes commons-compress 1.4.1, while Tika needs 1.14. 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> I also have Apache Avro in the project with commons-compress at 1.8.1, 
>>>>>>> so I force 1.14 with 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>  <dependencyManagement>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>      <dependencies>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>          <dependency>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>              <groupId>org.apache.commons</groupId>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>              <artifactId>commons-compress</artifactId>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>              <version>1.14</version>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>          </dependency>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>      </dependencies>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>>  </dependencyManagement>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> this seems to work as mvn dependency:tree -Ddetail=true only shows 1.14 
>>>>>>> and after purge, the local maven repo also only contains 1.14
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> yet, after i deploy the job and it reads an Avro package from kafka and 
>>>>>>> passes it to Tika, it fails with the error above, which leads me to 
>>>>>>> think it somehow uses commons-compress at a version prior to 1.14, 
>>>>>>> because method 'detect' is not present in older versions
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> I excluded/included it from the fat-jar
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> <exclude>org.apache.commons:commons-compress</exclude>
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> still the same problem
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> thanks for any hints!
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 
> 
>>> 
> 
>>>>> 
> 
>>> 
> 
>>>>>>> 

Reply via email to