首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jaydebeapi在AWS胶上找不到jar

jaydebeapi在AWS胶上找不到jar
EN

Stack Overflow用户
提问于 2022-03-02 21:27:09
回答 1查看 243关注 0票数 1

我试图在AWS Glue上通过Python中的jaydebeapi连接到Oracle数据库。我得到的错误是:

TypeError: Class oracle.jdbc.driver.OracleDriver is not found

我相信错误是由jaydebeapi无法找到ojdbc jar造成的,因为相同的代码在本地工作,路径是本地路径。

对于jaydebeapi,我应该在AWS上做什么来识别传递到jar的s3路径?我尝试将路径传递到Dependent JARs path字段,并在Job字段中指定--extra-jars

这是我的代码:

代码语言:javascript
复制
import jaydebeapi
props = {
   "user": "user",
   "password": "password",
   "oracle.jdbc.timezoneAsRegion": "false"
}
conn = jaydebeapi.connect("oracle.jdbc.driver.OracleDriver",
  "jdbc:oracle:thin:/oracle@host:port/orcl", 
  props, 
  "s3://path/to/ojdbc8-21.4.0.0.1.jar", 
  libs=None)
with conn.cursor() as curs:
  curs.execute("CREATE SEQUENCE SCHEMA.TABLE")

感谢您提前分享您的见解!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-08 12:43:51

事实证明,jaydebeapi库无法识别S3路径,因为它不是环境中的本地路径。我必须先将jar从S3下载到AWS的/tmp/目录,如下所示:

代码语言:javascript
复制
import boto3
s3 = boto3.resource('s3')
s3.Bucket('bucket_name').download_file('external-lib/jar/ojdbc8-21.4.0.0.1.jar','ojdbc8-21.4.0.0.1.jar')

然后我可以在/tmp/中加载jar

代码语言:javascript
复制
import jaydebeapi
props = {
   "user": "user",
   "password": "password",
   "oracle.jdbc.timezoneAsRegion": "false"
}
conn = jaydebeapi.connect("oracle.jdbc.driver.OracleDriver",
  "jdbc:oracle:thin:/oracle@host:port/orcl", 
  props, 
  "/tmp/ojdbc8-21.4.0.0.1.jar", 
  libs=None)
with conn.cursor() as curs:
  curs.execute("CREATE SEQUENCE SCHEMA.TABLE")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71329342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档