Apache spark spark提交:我能告诉spark不要每次都重新上传JAR吗
当像这样调用spark submit时Apache spark spark提交:我能告诉spark不要每次都重新上传JAR吗,apache-spark,Apache Spark,当像这样调用spark submit时spark submit-jars my/lib/jars/*.jar my main jar.jar,是否可以告诉spark submit不要重新上传jars文件(如果已经上传) 我有大约100个没有变化的库罐,但每次提交作业时,我必须等待10分钟,等待spark submit重新上传它们。我正在运行一个30秒的任务来调试一个只出现在集群上的问题,但我必须等待10分钟,它才能每次重新上载库JAR。您可以手动将JAR上载到集群,并告诉Spark从那里获取JA
spark submit-jars my/lib/jars/*.jar my main jar.jar
,是否可以告诉spark submit不要重新上传jars文件(如果已经上传)
我有大约100个没有变化的库罐,但每次提交作业时,我必须等待10分钟,等待
spark submit
重新上传它们。我正在运行一个30秒的任务来调试一个只出现在集群上的问题,但我必须等待10分钟,它才能每次重新上载库JAR。您可以手动将JAR上载到集群,并告诉Spark从那里获取JAR。例如,将所有jar放入HDFS中,然后在引用它们时使用HDFS://
url
查看更多详细信息。您可以手动将JAR上载到集群,并告诉Spark从那里获取JAR。例如,将所有jar放入HDFS中,然后在引用它们时使用
HDFS://
url
查看更多详细信息。按照Dikei的建议,您可以将它们放在spark运行的群集上: 如果是纱线: 手动将它们放在HDFS上,因为spark会在执行应用程序之前将它们复制到HDFS上,并检查它是否已经存在于HDFS上,如果存在,则会跳过该jar 如果spark独立群集: 这种情况更加耗时,因为每次运行spark时,jar都会复制到每个节点,因此在这种情况下,建议使用任何分布式文件系统来放置数据。
(只有当您有多个节点时才使用这种情况)正如Dikei所建议的,您可以将它们放在运行spark的群集上: 如果是纱线: 手动将它们放在HDFS上,因为spark会在执行应用程序之前将它们复制到HDFS上,并检查它是否已经存在于HDFS上,如果存在,则会跳过该jar 如果spark独立群集: 这种情况更加耗时,因为每次运行spark时,jar都会复制到每个节点,因此在这种情况下,建议使用任何分布式文件系统来放置数据。
(仅当您有多个节点时才出现这种情况)如果您有很多JAR,则从HDFS手动添加整个JAR列表可能是一项艰巨的任务。因此,我通常会将JAR上传到HDFS目录中(例如/tmp/lib/),这就是我将JAR列表放入变量的方式:
JARS=`hdfs dfs -ls -C hdfs://sandbox.hortonworks.com:8020/tmp/lib/*.jar 2>&1 | xargs echo -n | tr '[:space:]' ','`
调用hdfs“ls”时,使用“-C”仅打印文件路径,用hdfs://server:port“前缀以获取文件路径上的hdfs部分。xargs只是为了避免最后一个空格,而“tr”则是为了用逗号替换空格
JAR现在包含一个逗号分隔的列表,其中包含指向每个JAR的完整HDFS路径。您可以将其添加为spark submit上--jars选项的参数
小心对JAR进行访问权限管理。如果您有很多JAR,手动从HDFS添加整个JAR列表可能是一项艰巨的任务。因此,我通常会将JAR上传到HDFS目录中(例如/tmp/lib/),这就是我将JAR列表放入变量的方式:
JARS=`hdfs dfs -ls -C hdfs://sandbox.hortonworks.com:8020/tmp/lib/*.jar 2>&1 | xargs echo -n | tr '[:space:]' ','`
调用hdfs“ls”时,使用“-C”仅打印文件路径,用hdfs://server:port“前缀以获取文件路径上的hdfs部分。xargs只是为了避免最后一个空格,而“tr”则是为了用逗号替换空格
JAR现在包含一个逗号分隔的列表,其中包含指向每个JAR的完整HDFS路径。您可以将其添加为spark submit上--jars选项的参数
对JAR进行访问权限管理时要小心