我们正在尝试将一些工作从 informatica 迁移到 awsglue 大部分逻辑和转换已经完成。 最后一步是将数据插入公共的 oracle 数据库(aws rds 中不存在)。 是否可以在 awsglue 中执行插入和更新?
我尝试使用 cx_Oracle 模块,但出现错误
尽管如此,您可以使用 Glue pyspark 作业或 Glue python-shell 作业来执行此操作,但 Pyspark 并不意味着逐行执行 UPDATE/INSERT 操作 - 您可以追加(INSERT),也可以替换整个表。
如果您要使用 Python-shell 作业(Python V3.9 或更高版本)来完成此操作,您需要
下载 JDBC Oracle 驱动程序并将其添加到控制台中的“依赖 jar 路径”下。应添加完整的 S3 URI,例如。
s3://bucket-name/jars/oracle-jdbc.jar
接下来,添加所需的附加包。在控制台中,它位于“Python 库路径”下。
--additional-python-modules cx-Oracle==8.3.0
您可以从 Pypi.org 下载正确版本的 whl 文件
如果您处于限制网络中,限制 Glue 作业下载 python 软件包进行安装(添加其他软件包时您将看到以下错误),请将 cx_Oracle 的 whl 文件添加到 S3 中,然后添加这些文件,例如:
--additional-python-modules s3://bucket-name/whls/cx-oracle--py3-none-any.whl
。从 https://pypi.org/project/cx-Oracle/#files 找到正确的 whl 文件 - 选择 python 3.9、manylinux、x86_64
测试您的作业现在可以导入模块。https://pypi.org/project/cx-Oracle下载错误:[Errno 99] 无法 分配请求的地址——有些包裹可能找不到!不能 查找“cx_Oracle”的索引页(可能拼写错误?)
import cx_Oracle
import pandas as pd