sparkSQL 连接Oracle

本文详细介绍如何在Spark环境中配置Oracle JDBC驱动并实现数据读取。通过具体步骤和代码示例,展示了如何设置环境变量,加载ojdbc8.jar驱动,以及使用SparkSession进行数据查询。同时,提供了SID和ServiceName两种连接字符串的格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意

  1. 要将oracle.jdbc.OracleDriver ojdbc8.jar 放到spark目录D:\Users\lill001\projects\spark-2.4.3-bin-hadoop2.7\jars 下。
  2. sparkSQL 连接 oracle

# -*- coding: utf-8 -*-
from pyspark.sql import SparkSession
from pyspark.sql.types import StructType, StructField,StringType,DoubleType,DateType
import os

os.environ["SPARK_HOME"] = "D:\\Users\\lill001\\projects\\spark-2.4.3-bin-hadoop2.7"
os.environ["HADOOP_HOME"] = "D:\\Users\\lill001\\projects\\hadoop-common-2.2.0-bin-master"

os.environ["HADOOP_USER_NAME"] = "hdfs"

ORACLE_DRIVER_PATH = "D:\\Users\\lill001\\softwares\\instantclient_19_3\\ojdbc8.jar"
spark = SparkSession.builder.master("local").appName("spark-oracle").getOrCreate()
print(spark)
sc=spark.sparkContext
print(sc)

#从oracle 数据库表中读取数据到spark,如果要使用sql语句,则必须添加别名alias,比如下面的t
sqltext="(select col1,col2,col3 from tablename) t"
jdbcdf = spark.read.format('jdbc').options(
 url='jdbc:oracle:thin:@//127.0.0.1/oa3',
    dbtable='OA3DATA.SYS_NEWS_MAIN',
    user='123',
    password='123',
    driver="oracle.jdbc.OracleDriver").load()
print(jdbcdf)
jdbcdf.createOrReplaceTempView('tmp_vw')

df = spark.sql("SELECT fd_id, doc_subject, doc_en_subject, fd_news_source, doc_publish_time, doc_content, doc_en_content, fd_html_content FROM tmp_vw")
df.show()
sc.stop()

JDBC中Oracle的SID和ServiceName两种方式的连接字符串格式
SID格式:

jdbc:oracle:thin:@::
如: jdbc:oracle:thin:@192.168.1.1:1521:orcl
ServiceName格式:

jdbc:oracle:thin:@//:/<service_name>
如: jdbc:oracle:thin:@//192.168.1.1:1521/orcl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值