Eclipse 上带有 Dataflow Runner 的 Apache Beam MinimalWordcount 示例

Posted

技术标签:

【中文标题】Eclipse 上带有 Dataflow Runner 的 Apache Beam MinimalWordcount 示例【英文标题】:Apache Beam MinimalWordcount example with Dataflow Runner on eclipse 【发布时间】:2017-08-18 23:28:20 【问题描述】:

我正在尝试使用 Eclipse 中的 DataFlowRunner 在 Windows 上使用 MinimalWordCount 运行 MinimalWordCount 示例 -->Run As Java Application from with in eclipse ,它与使用我的 gcs 存储桶的示例中的股票代码相同,但是我一直得到以下异常,有人可以让我知道这里有什么问题吗?

    我已验证存储桶名称正确。 我已经在我的 Windows 机器上运行了 gcloud init。

线程“主”java.lang.RuntimeException 中的异常:未能 从工厂方法构造实例 DataflowRunner#fromOptions(接口 org.apache.beam.sdk.options.PipelineOptions) 在 org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:233) 在 org.apache.beam.sdk.util.InstanceBuilder.build(InstanceBuilder.java:162) 在 org.apache.beam.sdk.runners.PipelineRunner.fromOptions(PipelineRunner.java:56) 在 org.apache.beam.sdk.Pipeline.create(Pipeline.java:135) 在 com.dynaobject.apachebeamexperiment.MinimalWordCount.main(MinimalWordCount.java:77) 引起:java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在 java.lang.reflect.Method.invoke(未知来源) 在 org.apache.beam.sdk.util.InstanceBuilder.buildFromMethod(InstanceBuilder.java:222) ... 4 更多 原因:java.lang.IllegalArgumentException:DataflowRunner 需要 gcpTempLocation,但无法从中检索值 管道选项 在 org.apache.beam.runners.dataflow.DataflowRunner.fromOptions(DataflowRunner.java:212) ... 9 更多 原因:java.lang.IllegalArgumentException:为 gcpTempLocation 构造默认值时出错:tempLocation 不是 有效的 GCS 路径,gs://tempxyz。 在 org.apache.beam.sdk.options.GcpOptions$GcpTempLocationFactory.create(GcpOptions.java:219) 在 org.apache.beam.sdk.options.GcpOptions$GcpTempLocationFactory.create(GcpOptions.java:205) 在 org.apache.beam.sdk.options.ProxyInvocationHandler.returnDefaultHelper(ProxyInvocationHandler.java:575) 在 org.apache.beam.sdk.options.ProxyInvocationHandler.getDefault(ProxyInvocationHandler.java:516) 在 org.apache.beam.sdk.options.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:155) 在 com.sun.proxy.$Proxy15.getGcpTempLocation(未知来源) 在 org.apache.beam.runners.dataflow.DataflowRunner.fromOptions(DataflowRunner.java:210) ... 9 更多 原因:java.lang.IllegalArgumentException:输出路径不存在或不可写:gs://tempxyz 在 org.apache.beam.sdk.repackaged.com.google.common.base.Preconditions.checkArgument(Preconditions.java:191) 在 org.apache.beam.sdk.util.GcsPathValidator.verifyPathIsAccessible(GcsPathValidator.java:78) 在 org.apache.beam.sdk.util.GcsPathValidator.validateOutputFilePrefixSupported(GcsPathValidator.java:62) 在 org.apache.beam.sdk.options.GcpOptions$GcpTempLocationFactory.create(GcpOptions.java:217) ... 15 更多

【问题讨论】:

【参考方案1】:

在文档中的某处提到我需要运行以下命令。

gcloud auth 应用程序-默认登录

显然这个异常对解决这个问题没有帮助,我希望它可以帮助其他人。

【讨论】:

非常感谢! 谢谢!我必须登录并将 .json 密钥文件添加到我的环境变量中:export GOOGLE_APPLICATION_CREDENTIALS="XXX_credentials.json"

以上是关于Eclipse 上带有 Dataflow Runner 的 Apache Beam MinimalWordcount 示例的主要内容,如果未能解决你的问题,请参考以下文章

SSIS 使用带有变量而不是源数据库的 DataFlow 任务

Google-cloud-dataflow:无法通过带有“BigQueryDisposition.WRITE_TRUNCATE”的“WriteToBigQuery/BigQuerySink”将 jso

在本地运行 Dataflow 会导致 JVM 崩溃 (OOM)

GCP Dataflow JOB REST 响应添加带有 "key":"datasetName", ... 的 displayData 对象

Java/Dataflow - 无法使用 ClassLoader 检测类路径元素

如何使用 Stream 为 Spring Cloud Dataflow 中的子任务设置全局属性 - Task-Launcher-Dataflow