【发布时间】:2020-12-16 02:17:37
【问题描述】:
在 CLI 中,我移至 hadoop 目录(在 EMR 中)并下载了 ojdbc.jar 文件。我尝试使用下面的 spark shell 命令连接 Oracle DB:
pyspark \
--jars "/home/hadoop/ojdbc6.jar" \
--master yarn-client \
--num-executors 5 \
--driver-memory 14g \
--executor-memory 14g \
df = spark.read \
.format("jdbc") \
.option("url", "jdbc:oracle:thin:USER/HOST@//IP:PORT/SERVICE") \
.option("dbtable", "TABLE") \
.option("user", "USER") \
.option("password", "PASSWORD") \
.option("driver", "oracle.jdbc.driver.OracleDriver") \
.load()
它可以工作,但使用终端对我来说不方便。所以我想将 EMR Notebooks 连接到 Oracle DB 并尝试以下代码:
from pyspark import SparkContext, SparkConf
spark_conf = SparkConf().setAll([('spark.pyspark.python', 'python3'),
('spark.pyspark.virtualenv.enabled', 'true'),
('spark.pyspark.virtualenv.type', 'native'),
('spark.pyspark.virtualenv.bin.path', '/usr/bin/virtualenv'),
('spark.driver.extraClassPath', '/home/hadoop/ojdbc6.jar')])\
.setAppName('SparkJob')
sc = SparkContext.getOrCreate(conf=spark_conf)
df = sqlContext.read \
.format("jdbc") \
.options(url="jdbc:oracle:thin:USER/HOST@//IP:PORT/SERVICE",
dbtable="TABLE",
user="USER",
password="PASSWORD",
driver = "oracle.jdbc.driver.OracleDriver") \
.load()
得到一个错误:
An error occurred while calling o97.load.
: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
为了从 EMR Jupyter Notebooks 连接到 Oracle DB,是否缺少任何步骤?
【问题讨论】:
标签: apache-spark pyspark jupyter-notebook amazon-emr