Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark spark提交:我能告诉spark不要每次都重新上传JAR吗_Apache Spark - Fatal编程技术网

Apache spark spark提交:我能告诉spark不要每次都重新上传JAR吗

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时
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进行访问权限管理时要小心