jaydebeapi 在 AWS Glue 上找不到 jar
jaydebeapi cannot find jar on AWS Glue
我正尝试在 AWS Glue 上通过 Python 中的 jaydebeapi 连接到 Oracle 数据库。我收到错误消息:
TypeError: Class oracle.jdbc.driver.OracleDriver is not found
我认为错误是由于 jaydebeapi 无法找到 ojdbc jar,因为相同的代码在本地工作,路径是本地路径。
我应该在 AWS Glue 上为 jaydebeapi 做什么来识别传递到 jar 的 s3 路径?我试过将路径传递给 Dependent JARs path
字段,并在作业参数字段中指定 --extra-jars
。
这是我的代码:
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")
提前感谢您分享您的见解!
原来 jaydebeapi 库无法识别 S3 路径,因为它不是环境的本地路径。我必须首先将 jar 从 S3 下载到 AWS Glue 的 /tmp/
目录,如下所示:
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')
然后我可以将 jar 加载到 /tmp/
:
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")
我正尝试在 AWS Glue 上通过 Python 中的 jaydebeapi 连接到 Oracle 数据库。我收到错误消息:
TypeError: Class oracle.jdbc.driver.OracleDriver is not found
我认为错误是由于 jaydebeapi 无法找到 ojdbc jar,因为相同的代码在本地工作,路径是本地路径。
我应该在 AWS Glue 上为 jaydebeapi 做什么来识别传递到 jar 的 s3 路径?我试过将路径传递给 Dependent JARs path
字段,并在作业参数字段中指定 --extra-jars
。
这是我的代码:
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")
提前感谢您分享您的见解!
原来 jaydebeapi 库无法识别 S3 路径,因为它不是环境的本地路径。我必须首先将 jar 从 S3 下载到 AWS Glue 的 /tmp/
目录,如下所示:
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')
然后我可以将 jar 加载到 /tmp/
:
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")