对于当前的 ETL 工作,我正在尝试Python Shell Job在 Glue 中创建一个。转换后的数据需要保存在 DocumentDB 中。我无法从 Glue 访问 DocumentDB。
由于 DocumentDb 集群驻留在 VPC 中,我想创建一个接口网关以从 Glue 访问 Document DB,但 DocumentDB 不是接口网关中批准的服务之一。我认为隧道是一个建议的选择,但我不想这样做。
所以,我想知道有没有办法从 Glue 连接到 DocumentDB。
对于当前的 ETL 工作,我正在尝试Python Shell Job在 Glue 中创建一个。转换后的数据需要保存在 DocumentDB 中。我无法从 Glue 访问 DocumentDB。
由于 DocumentDb 集群驻留在 VPC 中,我想创建一个接口网关以从 Glue 访问 Document DB,但 DocumentDB 不是接口网关中批准的服务之一。我认为隧道是一个建议的选择,但我不想这样做。
所以,我想知道有没有办法从 Glue 连接到 DocumentDB。
在 AWS Glue 中创建一个虚拟 JDBC 连接。您不需要进行测试连接,但这将允许在 VPC 中创建 ENI。将此连接附加到您的 python shell 作业。这将允许您与资源进行交互。
您是否尝试过在粘合连接中使用 mongo db 连接,我们可以通过该选项连接文档 db。
我已经能够在 S3 中使用胶水连接 DocumentDb 并使用 csv 摄取数据,这是执行此操作的脚本
# Constants
data_catalog_database = 'sample-db'
data_catalog_table = 'data'
## @params: [JOB_NAME]
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
spark_context = SparkContext()
glue_context = GlueContext(spark_context)
job = Job(glue_context)
job.init(args['JOB_NAME'], args)
# Read from data source
## @type: DataSource
## @args: [database = "glue-gzip", table_name = "glue_gzip"]
## @return: dynamic_frame
## @inputs: []
dynamic_frame = glue_context.create_dynamic_frame.from_catalog(
database=data_catalog_database,
table_name=data_catalog_table
)
documentdb_write_uri = 'mongodb://yourdocumentdbcluster.amazonaws.com:27017'
write_documentdb_options = {
"uri": documentdb_write_uri,
"database": "yourdbname",
"collection": "yourcollectionname",
"username": "###",
"password": "###"
}
# Write DynamicFrame to MongoDB and DocumentDB
glue_context.write_dynamic_frame.from_options(dynamic_frame, connection_type="documentdb",
connection_options=write_documentdb_options)
总之: