首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用SecurityException在addShutdownHook上为BigQueryTableInserter启动带有应用程序引擎错误的数据流作业

用SecurityException在addShutdownHook上为BigQueryTableInserter启动带有应用程序引擎错误的数据流作业
EN

Stack Overflow用户
提问于 2016-03-21 22:02:12
回答 2查看 179关注 0票数 1

我试图通过一个(已经存在的) AppEngine应用程序启动数据流作业。DataFlow作业读取存储在DataStore中的GAE应用程序生成的数据,并将处理过的数据写入BigQuery。我收到了以下错误。

代码语言:javascript
运行
复制
java.lang.SecurityException: Google App Engine does not support Runtime.addShutdownHook
at com.google.appengine.runtime.Request.process-a010d936cef53bc8(Request.java)
at java.lang.Runtime.addShutdownHook(Runtime.java:46)
at com.google.cloud.dataflow.sdk.repackaged.com.google.common.util.concurrent.MoreExecutors$Application.addShutdownHook(MoreExecutors.java:232)
at com.google.cloud.dataflow.sdk.repackaged.com.google.common.util.concurrent.MoreExecutors$Application.addDelayedShutdownHook(MoreExecutors.java:204)
at com.google.cloud.dataflow.sdk.repackaged.com.google.common.util.concurrent.MoreExecutors$Application.getExitingExecutorService(MoreExecutors.java:188)
at com.google.cloud.dataflow.sdk.repackaged.com.google.common.util.concurrent.MoreExecutors.getExitingExecutorService(MoreExecutors.java:89)
at com.google.cloud.dataflow.sdk.util.BigQueryTableInserter.<clinit>(BigQueryTableInserter.java:79)
at com.google.cloud.dataflow.sdk.io.BigQueryIO$Write$Bound.verifyTableEmpty(BigQueryIO.java:886)
at com.google.cloud.dataflow.sdk.io.BigQueryIO$Write$Bound.apply(BigQueryIO.java:942)
at com.google.cloud.dataflow.sdk.io.BigQueryIO$Write$Bound.apply(BigQueryIO.java:724)
at com.google.cloud.dataflow.sdk.runners.PipelineRunner.apply(PipelineRunner.java:74)
at com.google.cloud.dataflow.sdk.runners.DataflowPipelineRunner.apply(DataflowPipelineRunner.java:327)
at com.google.cloud.dataflow.sdk.Pipeline.applyInternal(Pipeline.java:367)
at com.google.cloud.dataflow.sdk.Pipeline.applyTransform(Pipeline.java:274)
at com.google.cloud.dataflow.sdk.values.PCollection.apply(PCollection.java:161)

在通过GAE启动时,是否有一种方法可以在数据流中写入BigQuery表?我将运行程序设置为DataflowPipelineRunner,因此它不应该试图在GAE实例本身上运行它。(有什么方法可以证实吗?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-21 23:09:52

DataflowPipelineRunner试图在向Google服务提交作业之前验证您的管道。在此堆栈跟踪中,我们尝试验证目标BigQuery表是否为空。

在这个过程中,我们初始化了一个ExecutorService,它不允许在Google中运行。这是不幸的,因为在这种情况下,这不是严格需要的。此修复程序被跟踪为光束-142,请检查那里是否有任何更新。

解决方法是在App环境中禁用验证。在您的BigQueryIO.Write.withoutValidation()接收器中使用BigQuery。

票数 1
EN

Stack Overflow用户

发布于 2016-04-16 18:45:18

您可以尝试App灵活环境,它在允许的JRE类方面没有App标准那么严格。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36142464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档