我正在尝试谷歌提供的Wordcount示例。当我从本地计算机运行它时,它正在成功运行。
但是当我通过Google Cloud运行它时,它失败并出现以下异常,
java.io.IOException: INTERNAL: Finalize rejected (writer id not found) when talking to tcp://localhost:12345
例外也不清楚。
我发现当任何作业部件正在运行并且之后的作业未运行时会发生这种情况。
所以当我删除Sum.Perkey转换时,它已成功运行。
如下所示。
编辑1
日志说明如下
Jun 23, 2015, 5:21:27 PM
(306b526c890d6a9e): java.io.IOException: INTERNAL: Finalize rejected (writer id not found) when talking to tcp://localhost:12345 at com.google.cloud.dataflow.sdk.runners.worker.ApplianceShuffleWriter.close(Native Method) at
com.google.cloud.dataflow.sdk.runners.worker.ChunkingShuffleEntryWriter.close(ChunkingShuffleEntryWriter.java:66) at
com.google.cloud.dataflow.sdk.runners.worker.ShuffleSink$ShuffleSinkWriter.close(ShuffleSink.java:232) at
com.google.cloud.dataflow.sdk.util.common.worker.WriteOperation.finish(WriteOperation.java:100) at
com.google.cloud.dataflow.sdk.util.common.worker.MapTaskExecutor.execute(MapTaskExecutor.java:74) at com.google.cloud.dataflow.sdk.runners.worker.DataflowWorker.doWork(DataflowWorker.java:130) at
com.google.cloud.dataflow.sdk.runners.worker.DataflowWorker.getAndPerformWork(DataflowWorker.java:95) at
com.google.cloud.dataflow.sdk.runners.worker.DataflowWorkerHarness$WorkerThread.call(DataflowWorkerHarness.java:139) at
com.google.cloud.dataflow.sdk.runners.worker.DataflowWorkerHarness$WorkerThread.call(DataflowWorkerHarness.java:124) at
java.util.concurrent.FutureTask.run(FutureTask.java:266) at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)
我的工作ID是:2015-06-23_04_49_22-5338020413017331855
请帮助我为什么会这样。
答案 0 :(得分:1)
我解决了这个问题。
我将管道选项中的工作机器类型设置为
g1-small
以前我在使用
f1-micro
当我们使用Combine或GroupBy Transforms时,我们似乎必须使用g1-small work machine。
但是,我无法在数据流文档中的任何位置找到此信息。
如果Google记录如何将计算引擎实例用于数据流,那将会很不错。 这样可以节省我很多时间。