You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by "Luke Cwik (JIRA)" <ji...@apache.org> on 2017/10/03 16:41:00 UTC
[jira] [Commented] (BEAM-3002) Unable to provide a Coder for
org.apache.hadoop.hbase.client.Mutation
[ https://issues.apache.org/jira/browse/BEAM-3002?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16189944#comment-16189944 ]
Luke Cwik commented on BEAM-3002:
---------------------------------
This is unlikely a bug inside the SDK and has to do with your maven shade plugin configuration being incorrect.
You need to be using maven shade 3.0.0 or higher with a org.apache.maven.plugins.shade.resource.ServicesResourceTransformer configured.
See: https://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#ServicesResourceTransformer for more details.
> Unable to provide a Coder for org.apache.hadoop.hbase.client.Mutation
> ---------------------------------------------------------------------
>
> Key: BEAM-3002
> URL: https://issues.apache.org/jira/browse/BEAM-3002
> Project: Beam
> Issue Type: Bug
> Components: sdk-java-core
> Affects Versions: 2.1.0
> Environment: hadoop2.8.0, hbase1.2.6
> Reporter: huangjianhuang
> Assignee: Kenneth Knowles
>
> i write a demo with HbaseIO, and format data into Mutation to write to hbase.
> The demo works fine on idea or using mvn exec:java command, but doesn't work after shade packaged as jar (run with java -cp).
> The error message is :
> {code:java}
> Using the default output Coder from the producing PTransform 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.
> at org.apache.beam.sdk.repackaged.com.google.common.base.Preconditions.checkState(Preconditions.java:444)
> at org.apache.beam.sdk.values.PCollection.getCoder(PCollection.java:257)
> at org.apache.beam.sdk.values.PCollection.finishSpecifying(PCollection.java:106)
> at org.apache.beam.sdk.runners.TransformHierarchy.finishSpecifying(TransformHierarchy.java:222)
> at org.apache.beam.sdk.runners.TransformHierarchy.visit(TransformHierarchy.java:208)
> at org.apache.beam.sdk.Pipeline.traverseTopologically(Pipeline.java:440)
> at org.apache.beam.sdk.Pipeline.validate(Pipeline.java:552)
> at org.apache.beam.sdk.Pipeline.run(Pipeline.java:296)
> at org.apache.beam.sdk.Pipeline.run(Pipeline.java:283)
> at com.joe.FlinkDemoFinal.main(FlinkDemoFinal.java:113)
> {code}
> And i tried to print the default coder of Mutation, on IDEA it works fine and print "HBaseMutationCoder", but show nothing by running as jar.
> And then i tried to register "HBaseMutationCoder" manully, but found that the HBaseMutationCoder is a private class, i don't know how to register a coder for Mutation.
> Part of my code:
> {code:java}
> .apply("Hbase data format",
> ParDo.of(new DoFn<Long, Mutation>() {
> @ProcessElement
> public void processElement(ProcessContext context) {
> System.out.println(context.element());
> byte[] qual = Bytes.toBytes("count");
> byte[] cf = Bytes.toBytes("cf");
> byte[] row = Bytes.toBytes("kafka");
> byte[] val = Bytes.toBytes(context.element().toString());
> Mutation mutation = new Put(row).addColumn(cf, qual, val);
> context.output(mutation);
> }
> }));
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)