Apache pyspark使用oracle jdbc来提取数据。找不到司机

时间:2015-11-20 15:57:45

标签: python jdbc apache-spark pyspark

我在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()

3 个答案:

答案 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