我正在尝试将JDBC驱动程序添加到在Amazon之上执行的Spark集群中,但我一直得到以下内容:
java.sql.SQLException:没有为异常找到合适的驱动程序。
我尝试了以下几点:
你能帮我做一下吗?我怎样才能轻易地把驱动程序介绍给星火星团?
谢谢,
大卫
应用程序的源代码
val properties = new Properties()
properties.put("ssl", "***")
properties.put("user", "***")
properties.put("password", "***")
properties.put("account", "***")
properties.put("db", "***")
properties.put("schema", "***")
properties.put("driver", "***")
val conf = new SparkConf().setAppName("***")
.setMaster("yarn-cluster")
.setJars(JavaSparkContext.jarOfClass(this.getClass()))
val sc = new SparkContext(conf)
sc.addJar(args(0))
val sqlContext = new SQLContext(sc)
var df = sqlContext.read.jdbc(connectStr, "***", properties = properties)
df = df.select( Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***,
Constants.***)
// Additional actions on df发布于 2016-02-06 05:28:23
我也有同样的问题。为我工作的结束是使用-驱动类路径参数与火花提交。
主要是将整个星火类路径添加到--驱动程序类路径中。
以下是我的步骤:
我的驾驶员类路径最后看起来如下:
-驱动程序-类路径/home/hadoop/jars/mysql-connector-java-5.1.35.jar:/etc/hadoop/conf:/usr/lib/hadoop/:/usr/lib/hadoop-hdfs/:/usr/lib/hadoop-mapreduce/:/usr/lib/hadoop-yarn/:/usr/lib/hadoop-lzo/lib/:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/:/usr/share/aws/emr/emrfs/auxlib/*
这适用于EMR4.1,使用Java和Spark1.5.0。我已经将MySQL JAR添加为Maven pom.xml中的依赖项
您可能还想看看this answer,因为它似乎是一个更干净的解决方案。我自己也没试过。
发布于 2017-01-21 01:06:14
使用EMR5.2,我将任何新的jars添加到原始驱动程序classpath中:
export MY_DRIVER_CLASS_PATH=my_jdbc_jar.jar:some_other_jar.jar$(grep spark.driver.extraClassPath /etc/spark/conf/spark-defaults.conf | awk '{print $2}')在那之后
spark-submit --driver-class-path $MY_DRIVER_CLASS_PATH发布于 2020-07-09 23:55:53
遵循与this answer quoted above类似的模式,这就是我在EMR集群上自动安装JDBC驱动程序的方式。(对于每个作业启动和终止的瞬态集群来说,完全自动化非常有用。)
aws s3 cp s3://.../your-jdbc-driver.jar /home/hadoop/etc/spark/conf/spark-defaults.conf这将是另一个一行shell脚本,存储在S3中:
sudo sed -e 's,\(^spark.driver.extraClassPath.*$\),\1:/home/hadoop/your-jdbc-driver.jar,' -i /etc/spark/conf/spark-defaults.conf步骤本身看起来就像
{
"name": "add JDBC driver to classpath",
"jar": "s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar",
"args": ["s3://...bucket.../set-spark-driver-classpath.sh"]
}这将将JDBC驱动程序添加到spark.driver.extraClassPath中。
解释
https://stackoverflow.com/questions/32756335
复制相似问题