我正在尝试运行一个spark程序,其中我有多个jar文件,如果我只有一个jar我无法运行。我想添加位于相同位置的jar文件。我已尝试过以下但它显示了依赖性错误
spark-submit \
--class "max" maxjar.jar Book1.csv test \
--driver-class-path /usr/lib/spark/assembly/lib/hive-common-0.13.1-cdh5.3.0.jar
如何添加另一个位于同一目录中的jar文件?
我想添加/usr/lib/spark/assembly/lib/hive-serde.jar
。
答案 0 :(得分:28)
只需使用--jars
参数即可。 Spark将与执行程序共享这些jar(以逗号分隔)。
答案 1 :(得分:26)
指定所有其他jar的完整路径。
./bin/spark-submit --class "SparkTest" --master local[*] --jars /fullpath/first.jar,/fullpath/second.jar /fullpath/your-program.jar
或者通过添加以下行来在conf / spark-defaults.conf中添加jar:
spark.driver.extraClassPath /fullpath/firs.jar:/fullpath/second.jar
spark.executor.extraClassPath /fullpath/firs.jar:/fullpath/second.jar
答案 2 :(得分:12)
在conf / spark-defaults.conf中添加时,可以使用*将所有jar导入到文件夹中。
spark.driver.extraClassPath /fullpath/*
spark.executor.extraClassPath /fullpath/*
答案 3 :(得分:3)
我试图从使用spark-submit
执行的python代码连接到mysql。
我使用的是使用Ambari的HDP沙箱。尝试了许多选项,例如--jars
,--driver-class-path
等,但都没有。
在/usr/local/miniconda/lib/python2.7/site-packages/pyspark/jars/
截至目前,我不确定这是一个解决方案还是一个快速入侵,但由于我正在研究POC,所以它对我有用。
答案 4 :(得分:2)
在Spark 2.3中,您只需设置--jars选项即可。文件路径应该以方案为前缀,即Try like this
private void button2_Click(object sender, EventArgs e)
{
if(comboSelectServer.SelectedItem.ToString()== "SERV1")
{
MessageBox.Show("SERV1");
}
else if(comboSelectServer.SelectedItem.ToString()== "SERV2")
{
MessageBox.Show("SERV2");
}
else if(comboSelectServer.SelectedItem.ToString()== "SERV3")
{
MessageBox.Show("SERV3");
}
}
例如:file:///<absolute path to the jars>
或file:////home/hadoop/spark/externaljsrs/*
答案 5 :(得分:2)
将--jars
文件(由jar
分隔到,
的路径传递到spark-submit
。
供参考:
--driver-class-path is used to mention "extra" jars to add to the "driver" of the spark job
--driver-library-path is used to "change" the default library path for the jars needed for the spark driver
--driver-class-path will only push the jars to the driver machine. If you want to send the jars to "executors", you need to use --jars
并以编程方式设置罐子,请设置以下配置:
spark.yarn.dist.jars
以及以逗号分隔的罐子列表。
例如:
from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Spark config example") \
.config("spark.yarn.dist.jars", "<path-to-jar/test1.jar>,<path-to-jar/test2.jar>") \
.getOrCreate()
答案 6 :(得分:1)
您可以使用--jars $(echo /Path/To/Your/Jars/*.jar | tr''',')包含整个Jars文件夹。 所以, spark-submit-com.yourClass类\ --jars $(echo /Path/To/Your/Jars/*.jar | tr''',')\ ...
答案 7 :(得分:0)
对我来说--jars选项总是有效,但它太冗长了。要保存一些输入,您可以将所有jar放在一个名为'myJars'的目录中,然后使用此命令提交:
spark-submit --master local[*] --jars "/path/to/myJars/*.jar" --class <ClassName> <application_jar_name>.jar arg1 arg2
答案 8 :(得分:0)
对于--driver-class-path
选项,您可以使用:
作为分隔符来传递多个jar。
以下是使用spark-shell
命令的示例,但我想同样适用于spark-submit
spark-shell --driver-class-path /path/to/example.jar:/path/to/another.jar
火花版本:2.2.0
答案 9 :(得分:0)
如果您使用的是属性文件,则可以在其中添加以下行:
spark.jars=jars/your_jar1.jar,...
假设
<your root from where you run spark-submit>
|
|-jars
|-your_jar1.jar