在 google dataproc 上执行 Pig 作业时,如何使用逗号分隔的多个值的参数标志?

How to use params flag for muliple values with comma seperated when executing pig job on google dataproc?

如何为一个键传递以逗号分隔的多个值。

命令 1:

gcloud dataproc jobs submit pig--cluster msm-test-cluster -e "set;" --properties foo=bar --params bar=baz,bar1=(f1:chararray)

命令 2:

gcloud dataproc jobs submit pig--cluster msm-test-cluster -e "set;" --properties foo=bar --params bar=baz,bar1=(f1:chararray,f2:chararray,f3:chararray)

在上面的 command1 运行 中很好,但是 command2 bar1 有多个用逗号分隔的值,它失败了,因为 chararray 和 f2 之间有逗号。如何逃避这个逗号。请参阅以下错误消息。如果有人知道解决方案请告诉我。

**ERROR:** (gcloud.dataproc.jobs.submit.pig) argument --params: Bad syntax for dict arg: [id:chararray)]. Please see `gcloud topic flags-file` or `gcloud topic escaping` for information on providing list or dictionary flag values with special characters.
Usage: gcloud dataproc jobs submit pig --cluster=CLUSTER (--execute=QUERY, -e QUERY | --file=FILE, -f FILE) [optional flags]
  optional flags may be  --async | --bucket | --continue-on-failure |
                         --driver-log-levels | --execute | --file | --help |
                         --jars | --labels | --max-failures-per-hour |
                         --params | --properties | --region

有关此命令及其标志的详细信息,

run:gcloud dataproc jobs submit pig --help

正如 Cloud SDK Reference 所建议的那样,您需要将任何以逗号分隔的键值对封装在 [ ] 中。因此,像这样重写 gcloud 命令应该可行:

gcloud dataproc jobs submit pig--cluster msm-test-cluster -e "set;" --properties foo=bar --params=[bar=baz,bar1=(f1:chararray,f2:chararray,f3:chararray)]

应该使用 gcloud 转义技术解决该问题。参考 link : GCloud Escaping

所以命令可以更新和执行如下:

gcloud dataproc 作业提交 pig--cluster msm-test-cluster -e "set;" --properties foo=bar --params ^~^bar1="(f1:chararray, f2:chararray,f3:chararray)"~bar=baz