我在数据流UI中创建了一个作业,它工作正常。现在我想用一个小的 bash 脚本从命令行自动化它:
#GLOBAL VARIABLES
export PROJECT="cf-businessintelligence"
export GCS_LOCATION="gs://dataflow-templates/latest/Jdbc_to_BigQuery"
export MAX_WORKERS="15"
export NETWORK="businessintelligence"
export REGION_ID="us-central1"
export STAGING_LOCATION="gs://dataflow_temporary_directory/temp_dir"
export SUBNETWORK="bidw-dataflow-usc1"
export WORKER_MACHINE_TYPE="n1-standard-96"
export ZONE="us-central1-a"
export JOBNAME="test"
#COMMAND
gcloud dataflow jobs run $JOBNAME --project=$PROJECT --gcs-location=$GCS_LOCATION
--max-workers=$MAX_WORKERS
--network=$NETWORK
--parameters ^:^query="select current_date":connectionURL="jdbc:mysql://mysqldbhost:3306/bidw":user="xyz",password="abc":driverClassName="com.mysql.jdbc.Driver":driverJars="gs://jdbc_drivers/mysql-connector-java-8.0.16.jar":outputTable="cf-businessintelligence:bidw.mytest":tempLocation="gs://dataflow_temporary_directory/tmp"
--region=$REGION_ID
--staging-location=$STAGING_LOCATION
--subnetwork=$SUBNETWORK
--worker-machine-type=$WORKER_MACHINE_TYPE
--zone=$ZONE
当我运行它时,它失败并显示以下错误:
ERROR: (gcloud.dataflow.jobs.run) unrecognized arguments:
--network=businessintelligence
按照gcloud topic escaping
中的说明,我相信我正确地转义了我的参数,所以我真的很困惑。为什么网络参数失败?
尝试获取有关命令的帮助,以查看它当前接受哪些选项:
gcloud dataflow jobs run --help
对我来说,这显示了许多选项,但不是--network
选项。
然后我检查了beta
频道:
gcloud beta dataflow jobs run --help
它确实显示--network
选项。因此,您需要使用gcloud beta dataflow...
启动您的工作。
network
和subnetwork
参数都需要是完整的URL。
资料来源:https://cloud.google.com/dataflow/docs/guides/specifying-networks#example_network_and_subnetwork_specifications
subnetwork
标志的示例:
https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNETWORK_NAME