当前位置: 首页 > 知识库问答 >
问题:

在dataproc上提交Presto作业

轩辕阳焱
2023-03-14

我试图提交一个dataproc作业在运行Presto的群集与postgresql连接器。

集群初始化如下所示:

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来执行非默认操作。同时具有--可选组件--初始化操作都不起作用。

当我尝试运行简单作业时:

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

是否有其他方法来定义集群上的可选组件?

更新:

同时使用--可选组件--初始化操作,如下所示:

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复制的。只需对函数进行轻微修改,即可配置_连接器以创建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

这让我相信我必须重新编写初始化脚本。

当我指定--option-组件=PRESTO时,最好知道哪个初始化脚本正在运行。

共有1个答案

齐承泽
2023-03-14

如果您只想将可选组件设置为与Postgresendpoint一起工作,那么编写可选组件非常简单。您只需添加目录文件并重新启动presto。

https://gist.github.com/KoopaKing/8e653e0c8d095323904946045c5fa4c2

是初始化操作的一个示例。我已经用presto可选组件成功地测试了它,但它非常简单。您可以自由地提出示例,并将其放在您的GCS桶中。

 类似资料:
  • 我试图创建一个Dataproc集群与Presto作为可选组件,我想添加一个Kafka目录。以下https://cloud.google.com/dataproc/docs/concepts/components/presto和https://prestodb.io/docs/current/connector/kafka.html#configuration-properties我使用以下命令:

  • 正如标题所预期的,我在向docker上运行的spark集群提交spark作业时遇到了一些问题。 我在scala中写了一个非常简单的火花作业,订阅一个kafka服务器,安排一些数据,并将这些数据存储在一个elastichsearch数据库中。 如果我在我的开发环境(Windows/IntelliJ)中从Ide运行spark作业,那么一切都会完美工作。 然后(我一点也不喜欢java),我按照以下说明添

  • 问题内容: 单击后,我编写了以下代码以禁用网站上的提交按钮: 不幸的是,它没有发送表格。我怎样才能解决这个问题? 编辑 我想绑定提交,而不是表格:) 问题答案: 做到: 发生的事情是您实际上在完全触发该提交事件之前禁用了该按钮。 您可能还应该考虑使用ID或CLASS来命名元素,因此不要在页面上选择所有提交类型的输入。 (请注意,我使用,因此该表单在示例中并未实际提交;请在使用时将其保留。)

  • 默认情况下,所有设置都是。如何启用同时运行的多个作业?

  • 我的问题是我的pyspark作业没有并行运行。 代码和数据格式: 我的PySpark如下所示(显然是简化的): PySpark的全部要点是并行运行这个东西,显然不是这样。我在各种集群配置中运行了这些数据,最后一个配置是大量的,这时我注意到它是单一节点使用的。因此,为什么我的工作需要很长时间才能完成,而时间似乎与集群规模无关。 所有较小数据集的测试在我的本地机器和集群上都没有问题。我真的只是需要高档

  • 我正在Google Dataproc集群上的Jupyter Notebook上工作。当您使用笔记本时,它会在每个单元格的执行上给出输出。 我必须在集群上提交PySpark作业。作业将. py文件作为输入。下面附上截图 当我进入一条小路。ipynb文件它给出了以下错误。 线程“main”组织中出现异常。阿帕奇。火花SparkException:无法从JAR文件加载主类:/tmp/job-e48114