2017-06-20 17 views
0

私は150人の従業員でGoogle Dataflowジョブを実行しています。私はGoogleのPubSubからの入力を読んでいます。豊富な経験がないと、結果をGoogle BigQueryに書き込んでいます。java.lang.OutOfMemoryError:Javaヒープスペース - Google Dataflow Job

私はGoogleのデータフローに以下のエラーが表示され、いくつかのレコードの場合

(787b51f314078308): Exception: java.lang.OutOfMemoryError: Java heap space 
java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57) 
java.nio.ByteBuffer.allocate(ByteBuffer.java:335) 
... 
... 
... 
com.google.cloud.dataflow.sdk.util.SimpleDoFnRunner.invokeProcessElement(SimpleDoFnRunner.java:49) 
com.google.cloud.dataflow.sdk.util.DoFnRunnerBase.processElement(DoFnRunnerBase.java:139) 
com.google.cloud.dataflow.sdk.runners.worker.SimpleParDoFn.processElement(SimpleParDoFn.java:188) 
com.google.cloud.dataflow.sdk.runners.worker.ForwardingParDoFn.processElement(ForwardingParDoFn.java:42) 
com.google.cloud.dataflow.sdk.runners.worker.DataflowWorkerLoggingParDoFn.processElement(DataflowWorkerLoggingParDoFn.java:47) 
Stack trace truncated. Please see Cloud Logging for the entire trace. 

私は毎秒〜75Kのメッセージを処理するために、150人の労働者を使用しています。各メッセージのサイズは約1.5KBです。私はさらに労働者の数を増やすべきですか?あるいは、私は各労働者の記憶を増やす​​べきですか?どうすれば各労働者の記憶を増やす​​ことができますか?

答えて

0

労働者のためにより高いメモリマシンを使用することができます。たとえば、n1-highmem-2を試してみてください。

マシンタイプを選択するには、Pythonでは--worker_machine_typeパラメータを、Javaでは--workerMachineTypeパラメータを使用できます。

マシンタイプの詳細については、GCE Machine Types

を確認してください。
関連する問題