Azure Databricks连接Oracle数据库的实操步骤及问题解决方案问询
Azure Databricks 对接 Oracle Database 实操解决方案
1. 所需Jar包及官方获取渠道
- 适配Oracle 12c及以上版本、Azure Databricks所有主流运行时版本的驱动为
ojdbc8.jar,如果对接的是Oracle 11g及更低版本,可选择ojdbc6.jar - 注意:仅上传ojdbc8.jar大概率会出现连接异常,必须配套上传同版本的
orai18n.jar处理多字节字符集兼容问题,这是最常见的连接失败诱因 - 官方获取渠道:在Oracle官方网站的数据库软件下载分区,找到对应版本的JDBC驱动下载页即可获取,注册Oracle账号即可免费下载,无需额外付费
2. 完整连接操作步骤及示例代码
2.1 集群配置步骤
- 进入目标Databricks集群的「库」管理页面,上传下载好的
ojdbc8.jar和orai18n.jar两个文件 - 重启集群,等待两个Jar包的状态更新为「已安装」后再进行后续操作
2.2 读取数据示例代码(Python)
# 填写Oracle连接参数 jdbc_host = "Oracle数据库主机地址" jdbc_port = "1521" # 按需修改为实际端口 jdbc_service_name = "Oracle服务名" jdbc_username = "数据库账号" jdbc_password = "数据库密码" target_table = "目标表名,格式为SCHEMA_NAME.TABLE_NAME" # 构造JDBC连接URL,使用服务名的写法 jdbc_url = f"jdbc:oracle:thin:@{jdbc_host}:{jdbc_port}/{jdbc_service_name}" # 若使用SID而非服务名,替换为下面的写法 # jdbc_url = f"jdbc:oracle:thin:@{jdbc_host}:{jdbc_port}:{jdbc_sid}" # 读取Oracle表数据 df = spark.read.format("jdbc") \ .option("url", jdbc_url) \ .option("dbtable", target_table) \ .option("user", jdbc_username) \ .option("password", jdbc_password) \ .option("driver", "oracle.jdbc.driver.OracleDriver") \ .load() # 验证读取结果 df.show(5)
- 若上述步骤依然连接失败,优先排查Databricks集群所在虚拟网络的安全组、Oracle侧的防火墙是否放通了1521端口的访问权限,排除网络拦截问题
3. 更优的对接方案
- 小批量单次查询场景:直接用上述JDBC直连方案即可,无需引入额外组件,操作成本最低
- 大数据量同步/高频查询场景:推荐先通过Oracle CDC工具将全量+增量数据同步到Azure Data Lake Storage中,再通过Databricks直接读取湖内数据,该方案查询性能比JDBC直连高3~10倍,同时不会对生产Oracle数据库造成额外的查询压力
内容的提问来源于stack exchange,提问作者itskcl
相关产品推荐
相关产品推荐

