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
spark submit在类路径中添加多个JAR_Submit_Apache Spark_Classpath - Fatal编程技术网

spark submit在类路径中添加多个JAR

spark submit在类路径中添加多个JAR,submit,apache-spark,classpath,Submit,Apache Spark,Classpath,我试图运行一个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-cdh​5.3.0.jar 如何添加同一目录中的另一个jar文件 我

我试图运行一个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-cdh​5.3.0.jar
如何添加同一目录中的另一个jar文件


我想添加
/usr/lib/spark/assembly/lib/hive serde.jar
只需使用
--jars
参数。Spark将与执行者共享这些JAR(逗号分隔)。

为所有其他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

在conf/spark-defaults.conf中添加时,可以使用*将所有JAR导入文件夹

spark.driver.extraClassPath /fullpath/*
spark.executor.extraClassPath /fullpath/*

我试图从使用
spark submit
执行的python代码连接到mysql

我使用的是HDP沙盒,它使用的是Ambari。尝试了很多选项,如
--jars
--driver class path
等,但都没有成功

解决方案 在
/usr/local/miniconda/lib/python2.7/site packages/pyspark/jars/


到目前为止,我还不确定这是一个解决方案还是一个快速破解,但因为我正在研究POC,所以它对我来说很有用。

在Spark 2.3中,您只需设置--jars选项。文件路径应通过ie
file://
例如:
file:////home/hadoop/spark/externaljsrs/*
file:////home/hadoop/spark/externaljars/abc.jar,file:////home/hadoop/spark/externaljars/def.jar

对于
--驱动程序类路径
选项,您可以使用
作为delimeter传递多个jar。 下面是使用
sparkshell
命令的示例,但我想同样的方法也适用于
sparksubmit

    spark-shell --driver-class-path /path/to/example.jar:/path/to/another.jar
Spark版本:2.2.0

您可以使用--jars$(echo/Path/To/Your/jars/*.jar | tr'',')来包含整个jar文件夹。 所以 spark提交——class com.yourClass\ --jars$(echo/Path/To/Your/jars/*.jar | tr'',)\

如果您使用的是属性文件,则可以在此处添加以下行:

spark.jars=jars/your_jar1.jar,...
假设

<your root from where you run spark-submit>
  |
  |-jars
      |-your_jar1.jar

|
|-罐子
|-你的_jar1.jar
传递
--jars
,jar文件路径用
分隔,
发送到
spark提交

供参考:

--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
要以编程方式设置JAR,请设置以下配置:
spark.warn.dist.jars
带有逗号分隔的jar列表

例如:

从pyspark.sql导入SparkSession
火花=火花会话\
建筑商先生\
.appName(“Spark配置示例”)\
.config(“spark.warn.dist.jars”,“,”)\
.getOrCreate()

Welcome@avinash,在下一篇帖子中,我建议您看看
spark提交[restofyouroptions]--conf“spark.driver.extraClassPath=myjarfile.jar”
多个jar文件:
“spark.driver.extraClassPath=/path/myjarfile1.jar:/path/myjarfile2.jar”
@zahra对我不起作用,“没有合适的驱动程序”发现错误。此问题是由于JVM在设置“extraClassPath”配置之前已启动。。有什么方法可以在JVM启动之前设置它吗?我尝试了逗号分隔的spark submit--class“max”maxjar.jar Book1.csv test/usr/lib/spark/assembly/lib/hive-common-0.13.1-cdh5.3.0.jar,hive-serde.jar。但这两个罐子都看不懂。我得到了这个错误org/apache/hadoop/hive/conf/hiveconfig的意思是,像这样使用:spark submit--master_url--jars jar1,jar2--class classname application_jar实际上我想在我的类路径中添加多个jar。我没有权限在我的区域设置文件中复制jar,所以我只是通过类路径访问jars我也尝试过,但是它不起作用,Scink只考虑了第一个jar,第二个将它看作JAR JAR,因此,它抛出一个异常,说明用-Cype指定的类不是你确定的吗?我得到“16/10/20 19:56:43错误SparkContext:Jar未在文件:/root/.ivy2/jars/*.Jar中找到”相对路径也有效!我的设置是“spark.driver.extraClassPath lib/*”,其中lib是spark home下的一个目录,所有第三方jar都在那里。尽管在更大的编辑中删除这些内容更有意义。这是我在谷歌搜索时发现的第一个问题,仅供参考。在AWS EMR with Spark 2.x中,jars文件夹位于
/usr/lib/Spark/jars/
中。AWS有一个关于如何做到这一点的建议。我如何在windows中做到这一点?因为windows上的path包含冒号,例如D:\path一个以逗号分隔的包列表帮助了我。。在spark文件夹的bin文件夹中创建spark-defaults.conf文件。在spark-defaults.conf类型“spark.jars.packages org.apache.spark:spark-streaming-kafka-0-10_2.12:3.0.2,org.apache.spark:spark-avro_2.12:3.0.2”中,如您所见,我得到了第一个包“streaming kafka”和第二个包“spark avro”。。您所要做的就是通过使用逗号分隔符指定包来添加所需的包。
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()