Valentyn Tymofieiev created BEAM-1973:
-----------------------------------------
Summary: Improve error message for missing required Pipeline
options in Java API
Key: BEAM-1973
URL: https://issues.apache.org/jira/browse/BEAM-1973
Project: Beam
Issue Type: Improvement
Components: runner-dataflow
Reporter: Valentyn Tymofieiev
Assignee: Davor Bonaci
Priority: Minor
Here is an example error message when we fail to set GCP project ID:
Caused by: java.lang.IllegalArgumentException: Missing required value for
[public abstract java.lang.String
org.apache.beam.runners.dataflow.options.DataflowPipelineOptions.getProject(),
"Project id. Required when running a Dataflow in the cloud. See
https://cloud.google.com/storage/docs/projects for further details."].
We should make the error message more actionable by suggesting a command line
parameter that sets the pipeline option or pointing to relevant programmatic
API that sets it.
Full error message:
java.lang.reflect.InvocationTargetException
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:498)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.RuntimeException: Failed to construct instance from
factory method DataflowRunner#fromOptions(interface
org.apache.beam.sdk.options.PipelineOptions)
at
org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:233)
at
org.apache.beam.sdk.util.InstanceBuilder.build(InstanceBuilder.java:162)
at
org.apache.beam.sdk.runners.PipelineRunner.fromOptions(PipelineRunner.java:56)
at org.apache.beam.sdk.Pipeline.create(Pipeline.java:135)
at org.apache.beam.examples.WordCount.main(WordCount.java:175)
... 6 more
Caused by: java.lang.reflect.InvocationTargetException
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:498)
at
org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:222)
... 10 more
Caused by: java.lang.IllegalArgumentException: Missing required value for
[public abstract java.lang.String
org.apache.beam.runners.dataflow.options.DataflowPipelineOptions.getProject(),
"Project id. Required when running a Dataflow in the cloud. See
https://cloud.google.com/storage/docs/projects for further details."].
at
org.apache.beam.sdk.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:383)
at
org.apache.beam.sdk.options.PipelineOptionsValidator.validate(PipelineOptionsValidator.java:70)
at
org.apache.beam.runners.dataflow.DataflowRunner.fromOptions(DataflowRunner.java:196)
... 15 more
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)