Spark之spark-submit详解

作者:暴富20212024.01.29 22:39浏览量:171

简介:本文将详细解析Spark的提交工具spark-submit的使用方法,包括其参数和配置方式,以及如何通过该工具提交Spark应用程序。此外,还会介绍如何通过spark-submit上传文件和JAR包,以及如何配置Spark的配置属性。

一、概述
spark-submit是Apache Spark的命令行提交工具,用于提交Spark应用程序。通过spark-submit,用户可以将Spark应用程序提交到集群中运行,并对其进行各种配置。
二、使用方法
使用spark-submit需要指定以下参数:

  1. —class:主类名称,含包名。这是运行Spark应用程序所需的Java类的名称。
  2. —master:指定Spark master URL。可以是以下之一:local、yarn、mesos、k8s、standalone或其他自定义的master URL。
  3. —deploy-mode:指定部署模式。可以是client或cluster模式。
  4. —executor-memory:指定每个executor使用的内存量。
  5. —driver-memory:指定driver使用的内存量。
  6. —executor-cores:指定每个executor使用的CPU核数。
  7. —total-executor-cores:指定所有executors使用的总CPU核数。
  8. —driver-cores:指定driver使用的CPU核数。
  9. —queue:指定提交应用程序时使用的队列名称(仅适用于YARN和Mesos)。
  10. —files:逗号分隔的文件列表,这些文件将被放置在每个executor的工作目录中。
  11. —jars:逗号分隔的JAR包列表,这些JAR包将被放置在每个executor的工作目录中。
  12. —conf:指定Spark配置属性,例如:—conf spark.executor.memory=2g。
  13. —properties-file:指定包含Spark配置属性的文件路径。如果使用该参数,则在spark-submit中定义的属性将不再适用。
  14. —driver-class-path:指定driver的类路径。
  15. —jar:要提交的JAR文件路径。这是必需的参数,因为它是Spark应用程序的入口点。
  16. 应用程序的入口点参数。这是Java应用程序的主类或脚本文件路径。
    例如,以下是一个使用spark-submit提交Spark应用程序的示例命令:
    1. ./bin/spark-submit \n --class com.example.MyApp \n --master yarn \n --deploy-mode cluster \n --executor-memory 2g \n --driver-memory 2g \n --executor-cores 2 \n --total-executor-cores 10 \n --properties-file conf/spark-defaults.conf \n --jars mylib1.jar,mylib2.jar \n --files myfile1.txt,myfile2.txt \n /path/to/myapp.jar \n [application arguments]
    三、上传文件和JAR包
    通过使用—files和—jars参数,您可以使用spark-submit上传文件和JAR包到每个executor的工作目录中。这些文件和JAR包将被复制到每个executor节点上,并可用于在应用程序中使用。您可以使用SparkFiles.get(fileName)方法来访问这些文件。这非常有用,例如,如果您需要将配置文件或第三方库与您的应用程序一起分发。
    四、配置属性
    您可以使用—conf参数或通过properties-file指定Spark配置属性。这些属性控制Spark应用程序的行为和配置。例如,您可以设置Spark master URL、executor内存、核心数等。如果不指定properties-file,则可以使用默认的conf/spark-defaults.conf文件来定义属性。请注意,如果同时使用—conf和properties-file参数,则—conf中的属性将覆盖properties-file中的属性定义。