我正在使用Spark 2.2.0
处理应用程序并尝试使用maven-assembly-plugin/maven-shade-plugin/maven-jar-plugin
准备其分发。我按照以下方式开始我的火花环境:
SparkSession.builder
.enableHiveSupport()
.getOrCreate()
我试过案件:
予。 胖罐。 构建胖jar并将所有依赖项,应用程序类和配置放在那里。然后,我按如下方式运行此应用程序:/usr/bin/spark-submit --class some.pack.age.Main --master yarn --deploy-mode client --executor-memory 4G --num-executors 1 /path/to/the/fat/jar/fat.jar
。它的工作原理非常好。
II。 准备发布。 我准备了以下发行版:
|-- conf
| |-- log4j
| | `-- log4j.properties
| `-- main.conf
`-- lib
|-- all-dependecies.jar
`-- app.jar
然后我尝试运行它
/usr/bin/spark-submit --driver-class-path /som/path/conf --class some.pack.age.Main --master yarn --deploy-mode client --executor-memory 4G --num-executors 1 --jars __paths_to_the_two_jars__
然后我得到以下例外:
Caused by: org.datanucleus.store.rdbms.connectionpool.DatastoreDriverNotFoundException:
The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH.
Please check your CLASSPATH specification, and the name of the driver.
at org.datanucleus.store.rdbms.connectionpool.AbstractConnectionPoolFactory.loadDriver(AbstractConnectionPoolFactory.java:58)
at org.datanucleus.store.rdbms.connectionpool.BoneCPConnectionPoolFactory.createConnectionPool(BoneCPConnectionPoolFactory.java:54)
at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:238)
... 109 more
为什么在第一种情况下驱动程序在classpath中,但在第二种情况下不是?