在 dataproc 上提交 Presto 作业
Submit Presto job on dataproc
我正在尝试使用 postgresql 连接器在 运行ning Presto 集群上提交 dataproc
作业。
集群初始化如下:
gcloud beta dataproc clusters create ${CLUSTER_NAME} \
--project=${PROJECT} \
--region=${REGION} \
--zone=${ZONE} \
--bucket=${BUCKET_NAME} \
--num-workers=${WORKERS} \
--scopes=cloud-platform \
--initialization-actions=${INIT_ACTION}
${INIT_ACTION}
指向一个 bash 文件,其中包含使用 postgresql 启动 presto 集群的初始化操作。
我不使用--optional-components=PRESTO
因为我需要--initialization-actions
来执行非默认操作。 --optional-component
和 --initialization-actions
都不起作用。
当我尝试 运行 一份简单的工作时:
gcloud beta dataproc jobs submit presto \
--cluster ${CLUSTER_NAME} \
--region ${REGION} \
-e "SHOW TABLES"
我收到以下错误:
ERROR: (gcloud.beta.dataproc.jobs.submit.presto) FAILED_PRECONDITION: Cluster
'<cluster-name>' requires optional component PRESTO to run PRESTO jobs
是否有其他方法来定义集群上的可选组件?
更新:
同时使用 --optional-component
和 --initialization-actions
,如:
gcloud beta dataproc clusters create ${CLUSTER_NAME} \
...
--scopes=cloud-platform \
--optional-components=PRESTO \
--image-version=1.3 \
--initialization-actions=${INIT_ACTION} \
--metadata ...
${INIT_ACTION}
是从这个repo复制过来的。对函数 configure_connectors
稍作修改以创建 postgresql 连接器。
运行创建集群时出现以下错误:
ERROR: (gcloud.beta.dataproc.clusters.create) Operation [projects/...] failed: Initialization action failed. Failed action 'gs://.../presto_config.sh', see output in: gs://.../dataproc-initialization-script-0_output.
错误输出记录为:
+ presto '--execute=select * from system.runtime.nodes;'
Error running command: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:8080
这让我相信我必须重新编写初始化脚本。
当我指定 --optional-components=PRESTO
.
时,如果知道哪个初始化脚本是 运行ning 就好了
如果您只想设置可选组件以与 Postgres 端点一起使用,则编写可选组件来完成这件事非常简单。您只需添加目录文件并重新启动 presto。
https://gist.github.com/KoopaKing/8e653e0c8d095323904946045c5fa4c2
是一个示例初始化操作。我已经使用 presto 可选组件成功测试了它,但它非常简单。请随意分叉该示例并将其暂存到您的 GCS 存储桶中。
我正在尝试使用 postgresql 连接器在 运行ning Presto 集群上提交 dataproc
作业。
集群初始化如下:
gcloud beta dataproc clusters create ${CLUSTER_NAME} \
--project=${PROJECT} \
--region=${REGION} \
--zone=${ZONE} \
--bucket=${BUCKET_NAME} \
--num-workers=${WORKERS} \
--scopes=cloud-platform \
--initialization-actions=${INIT_ACTION}
${INIT_ACTION}
指向一个 bash 文件,其中包含使用 postgresql 启动 presto 集群的初始化操作。
我不使用--optional-components=PRESTO
因为我需要--initialization-actions
来执行非默认操作。 --optional-component
和 --initialization-actions
都不起作用。
当我尝试 运行 一份简单的工作时:
gcloud beta dataproc jobs submit presto \
--cluster ${CLUSTER_NAME} \
--region ${REGION} \
-e "SHOW TABLES"
我收到以下错误:
ERROR: (gcloud.beta.dataproc.jobs.submit.presto) FAILED_PRECONDITION: Cluster
'<cluster-name>' requires optional component PRESTO to run PRESTO jobs
是否有其他方法来定义集群上的可选组件?
更新:
同时使用 --optional-component
和 --initialization-actions
,如:
gcloud beta dataproc clusters create ${CLUSTER_NAME} \
...
--scopes=cloud-platform \
--optional-components=PRESTO \
--image-version=1.3 \
--initialization-actions=${INIT_ACTION} \
--metadata ...
${INIT_ACTION}
是从这个repo复制过来的。对函数 configure_connectors
稍作修改以创建 postgresql 连接器。
运行创建集群时出现以下错误:
ERROR: (gcloud.beta.dataproc.clusters.create) Operation [projects/...] failed: Initialization action failed. Failed action 'gs://.../presto_config.sh', see output in: gs://.../dataproc-initialization-script-0_output.
错误输出记录为:
+ presto '--execute=select * from system.runtime.nodes;'
Error running command: java.net.ConnectException: Failed to connect to localhost/0:0:0:0:0:0:0:1:8080
这让我相信我必须重新编写初始化脚本。
当我指定 --optional-components=PRESTO
.
如果您只想设置可选组件以与 Postgres 端点一起使用,则编写可选组件来完成这件事非常简单。您只需添加目录文件并重新启动 presto。
https://gist.github.com/KoopaKing/8e653e0c8d095323904946045c5fa4c2
是一个示例初始化操作。我已经使用 presto 可选组件成功测试了它,但它非常简单。请随意分叉该示例并将其暂存到您的 GCS 存储桶中。