beam-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lukasz Cwik <lc...@google.com>
Subject Re: Unable to provide a Coder for org.apache.hadoop.hbase.client.Mutation.
Date Fri, 09 Nov 2018 17:08:23 GMT
Good to know that the suggested fix work. Feel free to upvote the answer so
that others can see what worked.

On Fri, Nov 9, 2018 at 12:29 AM K Fred <yuanpengfred@gmail.com> wrote:

> Hi Lukasz,
>
> I have solved this issue by setting ServicesResourceTransformer on my
> maven-shade transformets list.
> And there are another way to solve this question by adding
> HBaseMutationCoder in code manually.
>
> Thanks.
>
> On Fri, Nov 9, 2018 at 3:16 AM Lukasz Cwik <lcwik@google.com> wrote:
>
>> Posted my answer on SO, reposting here for visibility:
>>
>> Note that the HBaseCoderProviderRegistrar[1] already registers the
>> HBaseMutationCoder for the Mutation type automatically already.
>>
>> Using the maven-shade plugin without handling service files contained in
>> META-INF/ inside your output jar is a common pitfall for users. You want to
>> add the ServicesResourceTransformer to your maven-shade transformers list.
>>
>> See Apache documentation[2] and ServiceLoader javadoc[3] for more
>> details. There are many other questions like this on StackOverflow.
>>
>>
>>   [1]:
>> https://github.com/apache/beam/blob/95f1a5aeba85cd4a6e0eb1ce6eee141e3667d86d/sdks/java/io/hbase/src/main/java/org/apache/beam/sdk/io/hbase/HBaseCoderProviderRegistrar.java#L30
>>   [2]:
>> https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ServicesResourceTransformer
>>   [3]:
>> https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html
>>
>>
>> On Thu, Nov 8, 2018 at 10:13 AM K Fred <yuanpengfred@gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I am running into an issue using HBaseIO with FlinkRunner.
>>> The exception is below:
>>> Exception in thread "main" java.lang.IllegalStateException: Unable to
>>> return a default Coder for
>>> ParDo(HBaseProfile)/ParMultiDo(HBaseProfile).output [PCollection]. Correct
>>> one of the following root causes:
>>>   No Coder has been manually specified;  you may do so using .setCoder().
>>>   Inferring a Coder from the CoderRegistry failed: Unable to provide a
>>> Coder for org.apache.hadoop.hbase.client.Mutation.
>>>   Building a Coder using a registered CoderProvider failed.
>>>   See suppressed exceptions for detailed failures.
>>>   Using the default output Coder from the producing PTransform failed:
>>> PTransform.getOutputCoder called.
>>> at
>>> org.apache.beam.repackaged.beam_sdks_java_core.com.google.common.base.Preconditions.checkState(Preconditions.java:444)
>>> at org.apache.beam.sdk.values.PCollection.getCoder(PCollection.java:278)
>>> at
>>> org.apache.beam.sdk.values.PCollection.finishSpecifying(PCollection.java:115)
>>> at
>>> org.apache.beam.sdk.runners.TransformHierarchy.finishSpecifyingInput(TransformHierarchy.java:190)
>>> at org.apache.beam.sdk.Pipeline.applyInternal(Pipeline.java:536)
>>> at org.apache.beam.sdk.Pipeline.applyTransform(Pipeline.java:488)
>>> at org.apache.beam.sdk.values.PCollection.apply(PCollection.java:370)
>>> at ac.cn.iie.process.ProfileProcess.process(ProfileProcess.java:91)
>>> at ac.cn.iie.Bootstrap.main(Bootstrap.java:25)
>>>
>>> I have no idea about this question. Just guess that may be related to
>>> Coder register. So i regist Coder provider manually. The detail is :
>>> https://stackoverflow.com/questions/53200867/unable-to-provide-a-coder-for-org-apache-hadoop-hbase-client-mutation-using-hbas/53200894#53200894
>>>
>>> Does anyone have better solution? I think it shouldn't register by user.
>>> It camn register automatically by pipeline.
>>> --
>>>
>>> Fred
>>>
>> --
>
> Fred
>

Mime
View raw message