我正在尝试将 Oracle 连接到 Spark,并希望从某些表和 SQL 查询中提取数据。但我无法连接到 Oracle。我尝试过不同的解决方案,但没有看到。我已按照以下步骤操作。如果我需要进行任何更改,请纠正我。
我使用的是 Windows 7 机器。我使用 Jupyter 笔记本来使用 Pyspark。我有 python 2.7 和 Spark 2.1.0。我在环境变量中设置了spark类路径:
SPARK_CLASS_PATH = C:\Oracle\Product\11.2.0\client_1\jdbc\lib\ojdbc6.jar
Run Code Online (Sandbox Code Playgroud)
jdbcDF = sqlContext.read.format("jdbc").option("driver", "oracle.jdbc.driver.OracleDriver").option("url", "jdbc:oracle://dbserver:port#/database" ).option("dbtable","Table_name").option("用户","用户名").option("密码","密码").load()
错误:
1.Py4JJava错误:
An error occurred while calling o148.load.
: java.sql.SQLException: Invalid Oracle URL specified
Run Code Online (Sandbox Code Playgroud)
2.Py4JJava错误:
An error occurred while calling o114.load. : java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
Run Code Online (Sandbox Code Playgroud)
另一种情况:
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext
ORACLE_DRIVER_PATH = "C:\Oracle\Product\11.2.0\client_1\jdbc\lib\ojdbc7.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() …Run Code Online (Sandbox Code Playgroud) 我计划保存一些数据帧/表以缓存在 Spark 中。我想知道缓存了多少数据帧/表?
我已经导入了以下模块。我试图从 sqlCtx.read.format 加载数据,我在实例化 'org.apache.spark.sql.hive.HiveSessionState':""错误时收到“IllegalArgumentException: u”错误,但是当我使用 spark 时它运行良好。读取格式。当我从注册的临时表/视图中检索数据时,我看到了相同的行为。我可以添加什么来使用 sqlCtx.sql 而不是 spark.sql?
import os
import sys
import pandas as pd
import odbc as pyodbc
import os
import sys
import re
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
from pyspark.sql import Row
from pyspark.sql.functions import *
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import pyspark.sql.functions as func
import matplotlib.patches as mpatches
import time as time
from matplotlib.patches …Run Code Online (Sandbox Code Playgroud)