在AWS Glue ETL脚本中使用自定义连接器



我正在使用dynamic frame胶水抽象编写AWS-Glue ETL脚本,并在python中编写代码。

我在glue数据目录中创建了一个名为sap-lpr-connection的JDBC连接资源,并希望使用它从代码中检索连接选项。

根据这个链接(和其他来源(,我应该使用"custom.jdbc"connection_type来访问我创建的连接资源。

这就是我的代码:

from pyspark.context import SparkContext
from awsglue.context import GlueContext
# DATABASE
database = 'sap_lpr'
table = 'bsim'
# GLUE CONTEXT
glue_context = GlueContext(SparkContext.getOrCreate())
# CONNECTION OPTIONS
connection_options = {
"connectionName": f"{database.replace('_', '-')}-connection",
"dbTable": table
}
# READ DATA
dyf = glue_context.create_dynamic_frame.from_options(
connection_type="custom.jdbc",
connection_options=connection_options
)

但是当我运行代码时,我得到了这个错误:

调用o81.getSource时出错。Glue ETL Marketplace:无法检索所需字段CONNECTOR_TYPE。

我知道另一种选择是指定一个"jdbc"connection_type并传递各种连接选项,如jdbc URL、用户名和密码,但我更喜欢从我为此专门创建的粘合连接资源中检索这些信息。

此外,我真的想坚持使用glue_contextAPI,而不是标准的spark API。

知道我可能做错了什么吗?

好吧,原来我误解了我使用的连接器类型。

我在AWS Glue Data Catalog中创建了一个连接资源;标准";连接器,JDBC连接器,这在connection_type字段中不被视为自定义连接器类型,而是您指定的标准JDBC连接,例如:connection_type='sqlserver'

因此,如果使用标准连接器(如JDBC(创建连接,则必须使用.extract_from_conf()方法从连接资源中提取配置:

configuration = glue_context.extract_jdbc_conf(
connection_name,
catalog_id=None
)
connection_options = {
"url": configuration["url"],
"user": configuration["user"]
"password": configuration["password"]
}

最新更新