我试图通过一个(已经存在的) AppEngine应用程序启动数据流作业。DataFlow作业读取存储在DataStore中的GAE应用程序生成的数据,并将处理过的数据写入BigQuery。我收到了以下错误。
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实例本身上运行它。(有什么方法可以证实吗?)
发布于 2016-03-21 23:09:52
DataflowPipelineRunner试图在向Google服务提交作业之前验证您的管道。在此堆栈跟踪中,我们尝试验证目标BigQuery表是否为空。
在这个过程中,我们初始化了一个ExecutorService,它不允许在Google中运行。这是不幸的,因为在这种情况下,这不是严格需要的。此修复程序被跟踪为光束-142,请检查那里是否有任何更新。
解决方法是在App环境中禁用验证。在您的BigQueryIO.Write.withoutValidation()接收器中使用BigQuery。
发布于 2016-04-16 18:45:18
您可以尝试App灵活环境,它在允许的JRE类方面没有App标准那么严格。
https://stackoverflow.com/questions/36142464
复制相似问题