使用多个 jar 创建 dataproc 集群

creating dataproc cluster with multiple jars

我正在尝试创建一个将 dataproc 连接到 pubsub 的 dataproc 集群。我需要在 spark.jars 标志

中的集群创建中添加多个 jar
gcloud dataproc clusters create cluster-2c76 --region us-central1 --zone us-central1-f --master-machine-type n1-standard-4 \
--master-boot-disk-size 500 \
--num-workers 2 \
--worker-machine-type n1-standard-4 \
--worker-boot-disk-size 500 \
--image-version 1.4-debian10 \
--properties spark:spark.jars=gs://bucket/jars/spark-streaming-pubsub_2.11-2.4.0.jar,gs://bucket/jars/google-oauth-client-1.31.0.jar,gs://bucket/jars/google-cloud-datastore-2.2.0.jar,gs://bucket/jars/pubsublite-spark-sql-streaming-0.2.0.jar spark:spark.driver.memory=3000m \
--initialization-actions gs://goog-dataproc-initialization-actions-us-central1/connectors/connectors.sh \
--metadata spark-bigquery-connector-version=0.21.0 \
--scopes=pubsub,datastore

我被抛出这个错误

ERROR: (gcloud.dataproc.clusters.create) argument --properties: Bad syntax for dict arg: [gs://gregalr/jars/spark-streaming-pubsub_2.11-2.3.4.jar]. Please see `gcloud topic flags-file` or `gcloud topic escaping` for information on providing list or dictionary flag values with special characters.

如果有更好的dataproc连接pubsub的方法,欢迎分享

您链接的答案是正确的做法:

如果您还 post 您尝试使用转义语法的命令和生成的错误消息,那么其他人可以更轻松地验证您做错了什么。看起来您在 jars spark:spark.driver.memory=3000m 列表之外还指定了一个额外的 spark 属性,并试图仅 space-将其与 jars 标志分开,这是不允许的.

根据链接结果,您需要使用新分配的分隔符来分隔第二个火花 属性:

--properties=^#^spark:spark.jars.packages=artifact1,artifact2,artifact3#spark:spark.driver.memory=3000m