对于当前的 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)
总之: