我正在使用 GCP 上的数据流管道将数据插入 BigQuery。然而,每次我运行它时,它都会为该作业创建一个新的虚拟机。我想要的是运行多个作业但重用虚拟机。例如,我不想创建一个新的虚拟机,而是为其指定一个虚拟机实例名称以使用该实例而不是创建一个新实例。或者,如果它能够自动识别作业来自 Dataflow 并为 Dataflow 作业重用 VM,那就太好了。
要运行管道,我使用以下命令:
python3 -m PositionData-rcv-pipe \
--project=$GCP_PROJECT \
--region=$REGION \
--input_topic=projects/$GCP_PROJECT/topics/$TOPIC_ID \
--output_path=gs://$BUCKET_NAME/samples/output \
--runner=DataflowRunner \
--worker-pool=$WORKERS_POOL \
--max_parallelism=2 \
--num_workers=1 \
--max_num_workers=3 \
--experiments=use_sibling_sdk_workers \
--window_size=10 \
--num_shards=12 \
--job_name position \
--setup_file ./setup.py \
--staging_location gs://$BUCKET_NAME/staging \
--temp_location gs://$BUCKET_NAME/temp \
--service_account_email=$API_SA \
--machine_type=n1-standard-1 \
--reuse_nodes=True \
--vm_reuse=True \
--number_of_worker_harness_threads=6 \
--reuseWorkerHarness=True \
# --update
# --extra_package dist/package_proto-0.1.tar.gz \
export GOOGLE_CLOUD_DATAFLOW_VM_REUSE=True
我期望的是,如果我有两个数据流作业,它们会为这两个作业使用相同的虚拟机,而不是为每个作业创建单独的虚拟机。
由于 Dataflow 中资源分配的扩展性质,我认为这不是目前适用的设置。
参考:
https://cloud.google.com/dataflow/docs/overview#scalable
我不确定是否适用于您的用例,但您可以尝试自定义图像容器。