将BigTable表导出到Google云存储时面临OutOfMemoryException

时间:2019-06-05 19:50:02

标签: google-cloud-bigtable

我通过点击此链接https://cloud.google.com/bigtable/docs/exporting-sequence-files#exporting_sequence_files_2

将Cloud Bigtable中的表导出到Cloud Storage

bigtable表的大小约为300GB,数据流管道导致此错误

An OutOfMemoryException occurred. Consider specifying higher memory instances in PipelineOptions.
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:3236)
at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:118)...

,该错误表明增加了用于数据流作业的实例类型的内存。我还收到警告说

Worker machine type has insufficient disk (25 GB) to support this type of Dataflow job. Please increase the disk size given by the diskSizeGb/disk_size_gb execution parameter.

我重新检查了要在此处运行管道的命令(https://github.com/googleapis/cloud-bigtable-client/tree/master/bigtable-dataflow-parent/bigtable-beam-import),并尝试查找任何命令行选项,该选项可帮助我为该实例设置自定义实例类型或PD大小,但找不到任何。

默认情况下,实例类型为n1-standard-1,PD大小为25GB。

在创建作业期间是否有任何参数可以帮助我避免此错误?如果是,那是什么?

1 个答案:

答案 0 :(得分:3)

我找到了用于选择自定义PD大小和实例类型的参数。是

--diskSizeGb=[Disk_size_in_GBs] --workerMachineType=[GCP_VM_machine_type]

我使用的是

--diskSizeGb=100 --workerMachineType=n1-highmem-4

这些参数是PipelineOptions类的一部分,用于定义执行时间参数。您可以在这里https://beam.apache.org/releases/javadoc/2.3.0/org/apache/beam/runners/dataflow/options/DataflowPipelineWorkerPoolOptions.html

引用更多参数

但是由于我将--maxNumWorkers设置为30以进行自动缩放,所以我遇到了一些配额问题,这些问题将阻止您的工作自动缩放,并且速度变慢但没有错误。