Apache spark 我可以用spark submit发送整个文件夹吗?

Apache spark 我可以用spark submit发送整个文件夹吗?,apache-spark,Apache Spark,我知道可以通过spark submit和--files选项发送文件,但也可以发送整个文件夹吗 实际上我想发送lib文件夹,其中包含外部库的jar文件。或者--jars选项是否已经在executor目录上创建了一个lib文件夹?在我的情况下,必须有一个lib文件夹,否则会出现错误。否,spark submit--files选项不支持发送文件夹,但您可以将所有文件放在一个zip中,在--files列表中使用该文件。您可以在spark作业中使用SparkFiles.get(filename)加载文件、

我知道可以通过spark submit和--files选项发送文件,但也可以发送整个文件夹吗

实际上我想发送lib文件夹,其中包含外部库的jar文件。或者--jars选项是否已经在executor目录上创建了一个lib文件夹?在我的情况下,必须有一个lib文件夹,否则会出现错误。

否,spark submit
--files
选项不支持发送文件夹,但您可以将所有文件放在一个zip中,在
--files
列表中使用该文件。您可以在spark作业中使用
SparkFiles.get(filename)
加载文件、分解文件并使用分解文件filename不需要是绝对路径,只要filename就可以了


PS:只有在SparkContext被初始化后,它才能工作。

我认为您有多种解决方案可以做到这一点

首先,我可以理解您希望将其自动化,但是如果您没有太多的jar,您可以将它们作为参数逐个传递给--jars选项

否则,您可以只sudo mvspark安装的spark/jars目录中的所有jar,但对于集群来说,这很烦人

所以最后,你可以这样做

如果您需要集群模式,这并不能解决问题。对于集群模式,我只需要修改bash代码来查询jar的HDFS目录。并将所有jar放在HDFS目录中

也许还有其他解决办法,但那是我的想法


祝你周末愉快

当你说jar文件时,你是指你的代码需要的外部库吗?或者您编译的Spark代码可执行文件?是的,外部库。我有一个python脚本,可以读取所有jar文件,但问题是如何将它们放在执行者目录的lib文件夹中。spark submit是否默认将--jars指定的所有文件放在lib文件夹中,或者我必须自己创建一个。我不明白您的答案。所以,如果我把文件放在一个zip文件中,比如lib.zip,spark会把文件放在executor目录的文件夹lib中吗?不,我指的是传递一个包含多个conf文件的文件夹,我的答案与--files有关。--jar和--files都将文件复制到executor的工作目录中,但--files中给出的JAR列表不会包含在类路径中。为了在类路径中使用JAR,JAR必须在--jars列表中给出--jars不支持文件夹包含。请在--files中提供conf文件,在--jars列表中提供依赖项,这样您就可以将它们自动复制到executor的工作目录中。