我在Windows 7上使用apache spark pyspark(spark-1.5.2-bin-hadoop2.6)。
当我在pyspark中运行我的python脚本时,我一直收到此错误。
调用o23.load时发生错误。 java.sql.SQLException:没有为jdbc找到合适的驱动程序:oracle:thin:--------------------------------- ---连接
这是我的python文件
import os
os.environ["SPARK_HOME"] = "C:\\spark-1.5.2-bin-hadoop2.6"
os.environ["SPARK_CLASSPATH"] = "L:\\Pyspark_Snow\\ojdbc6.jar"
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext
spark_config = SparkConf().setMaster("local[8]")
sc = SparkContext(conf=spark_config)
sqlContext = SQLContext(sc)
df = (sqlContext
.load(source="jdbc",
url="jdbc:oracle:thin://x.x.x.x/xdb?user=xxxxx&password=xxxx",
dbtable="x.users")
)
sc.stop()
答案 0 :(得分:2)
不幸的是,更改环境变量SPARK_CLASSPATH
将无效。你需要声明
spark.driver.extraClassPath L:\\Pyspark_Snow\\ojdbc6.jar
在您的/path/to/spark/conf/spark-defaults.conf
中或仅使用其他参数spark-submit
执行--jars
作业:
spark-submit --jars "L:\\Pyspark_Snow\\ojdbc6.jar" yourscript.py
答案 1 :(得分:1)
要以编程方式设置罐子,请设置以下配置:
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()
或如下:
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext
spark_config = SparkConf().setMaster("local[8]")
spark_config.set("spark.yarn.dist.jars", "L:\\Pyspark_Snow\\ojdbc6.jar")
sc = SparkContext(conf=spark_config)
sqlContext = SQLContext(sc)
或者将--jars
文件的路径(由jar
分隔的,
传递到spark-submit
。
答案 2 :(得分:0)
您还可以使用--jars和--driver-class-path添加jar,然后专门设置驱动程序。见https://stackoverflow.com/a/36328672/1547734