对于当前的ETL作业,我试图在Glue中创建Python Shell Job
。转换后的数据需要保留在DocumentDB中。我无法从Glue访问DocumentDB。
由于DocumentDb群集位于VPC中,因此我想创建一个接口网关来从Glue访问Document DB,但是DocumentDB并不是Interface Gateway中批准的服务之一。我将隧道视为建议的选项,但我不想这样做。
所以,我想知道是否有一种方法可以从Glue连接到DocumentDB。
答案 0 :(得分:2)
在AWS Glue中创建一个虚拟JDBC连接。您无需进行测试连接,但这将允许在VPC中创建ENI。将此连接附加到您的python shell作业。这将允许您与资源进行交互。
答案 1 :(得分:1)
如果您尝试在胶粘连接中使用mongo db连接,我们可以通过该选项连接文档db。
答案 2 :(得分:1)
我已经能够用胶水连接DocumentDb并使用S3中的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)
总结: