我正在尝试连接到Oracle以火花,并希望从某些表和SQL查询中提取数据。但是我无法连接到Oracle。我已经尝试了有关选项的不同工作,但没有外观。我遵循了以下步骤。如果我需要进行任何更改,请纠正我。
我正在使用Windows 7机器。我使用Jupyter笔记本使用Pyspark。我有Python 2.7和Spark 2.1.0。我已经在环境变量中设置了火花类路径:
SPARK_CLASS_PATH = C:OracleProduct11.2.0client_1jdbclibojdbc6.jar
jdbcdf = sqlcontext.read.format(" jdbc")。option(" driver"," oracle.jdbc.driver.oracledriver")。选项(" url",jdbc:oracle:oracle://dbserver://dbserver:port port##/database')。选项(" dbtable"," table_name")。选项("用户","用户名")。选项("密码","密码")。load()
错误:
1.py4jjavaerror:
An error occurred while calling o148.load.
: java.sql.SQLException: Invalid Oracle URL specified
2.py4jjavaerror:
An error occurred while calling o114.load. : java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
另一种情况:
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext
ORACLE_DRIVER_PATH = "C:OracleProduct11.2.0client_1jdbclibojdbc7.jar"
Oracle_CONNECTION_URL ="jdbc:oracle:thin:username/password@servername:port#/dbservicename"
conf = SparkConf()
conf.setMaster("local")
conf.setAppName("Oracle_imp_exp")
sqlContext = SQLContext(sc)
ora_tmp=sqlContext.read.format('jdbc').options(
url=Oracle_CONNECTION_URL,
dbtable="tablename",
driver="oracle.jdbc.OracleDriver"
).load()
我要低于错误。
Error: IllegalArgumentException: u"Error while instantiating org.apache.spark.sql.hive.HiveSessionState':"
请帮助我。
这个更改已经解决了。
sqlContext = SQLContext(sc)
ora_tmp=spark.read.format('jdbc').options(
url=Oracle_CONNECTION_URL,
dbtable="tablename",
driver="oracle.jdbc.OracleDriver"
).load()
使用此设置:
spark_session = ...
emDF = spark_session.read
.format("jdbc")
.option("url", "jdbc:oracle:thin:@your_aliastns?TNS_ADMIN=path/to/wallet")
.option("dbtable", 'table_name or query')
.option("user", "user")
.option("password", "password")
.option("driver", "oracle.jdbc.driver.OracleDriver")
.load()
记住要查看ojbcx.jar并放入第一个钱包文件夹,即firstdfolder/secondfolder/walletfolder
放入FirstFolder。
钱包文件夹包含别名(tnsnames.ora)验证此!
我遵循以下代码,对我有用。导入JDBC驱动器(OJDBC6)。
import org.apache.spark.sql.SparkSession
object ConnectingOracleDatabase {
def main(args: Array[String]): Unit = {
val spark = SparkSession.builder()
.appName("ConnectingOracleDatabase")
.master("local")
.getOrCreate()
val jdbcDF = spark.read
.format("jdbc")
.option("url", "jdbc:oracle:thin:@localhost:1521:xe")
.option("dbtable", "ADDRESS")
.option("user", "system")
.option("password", "oracle")
.option("driver", "oracle.jdbc.OracleDriver")
.load()
jdbcDF.show()
}
}