Presto Spark执行Presto任务


1 任务准备

下载Presto Spark包tarball,presto-spark-package-0.264.tar.gz 和Presto Spark laucher,presto-spark-launcher-0.264.jar

将这两个文件都保存在示例目录(如下)中。我们在这里假设有一个双节点Spark集群,每个集群有四个核,因此总共有八个核。

下面是一个例子config.properties

task.concurrency=4
task.max-worker-threads=4
task.writer-count=4

注意:task.concurrency,task.writer-count和 task.max-worker-threads分别设置为4,因为我们每个执行程序都有四个核,并且希望与下面的相关Spark提交参数同步

2 执行任务

要在Spark上执行Presto,首先启动您的Spark集群,我们假设它的URL为spark://spark-master:7077

将查询保存在一个名为query.sql的文件中。

从之前创建的示例目录运行spark-submit命令:

/spark/bin/spark-submit \ 
--master spark://spark-master:7077 \ 
--executor-cores 4 \ 
--conf spark.task.cpus=4 \ 
--class com.facebook.presto.spark .launcher.PrestoSparkLauncher \ 
  presto-spark-launcher-0.264.jar \ 
--package presto-spark-package-0.264.tar.gz \ 
--config /presto/etc/config.properties \ 
--catalogs /presto/etc/目录 \ 
--catalog hive \ 
--schema 默认 \ 
--file query.sql

在Spark提交参数中,请注意executor-cores(Spark 中每个执行器的内核数)和spark.task.cpus(分配给 Spark 中每个任务的内核数)的值。这些也等于核数(在这种情况下为4),并且与config.properties上面讨论的一些设置相同。这是为了确保单个Presto on Spark任务在单个Spark执行器中运行。