繁体   English   中英

将 AWS Glue 连接到 Mongodb Atlas 集群

[英]Connecting AWS Glue to Mongodb Atlas Cluster

有没有人设法让这个工作? 我在 AWS Glue 中添加了一个连接以连接到我在 Atlas 中的 Mongodb 集群,但遇到

Check that your connection definition references your Mongo database with correct URL syntax, username, and password Exiting with error code 30

在 aws 中

我在与我的 VPC 中的胶水连接相同的 su.net 中启动了一个 ec2 实例,它连接得很好。 还允许我的安全组中的所有流量,但仍然出现相同的错误。

您可能需要查看authSource以了解字符串 uri MongoDB 中的可选组合。

Scala 例子

import com.amazonaws.services.glue.GlueContext
import com.amazonaws.services.glue.MappingSpec
import com.amazonaws.services.glue.errors.CallSite
import com.amazonaws.services.glue.util.GlueArgParser
import com.amazonaws.services.glue.util.Job
import com.amazonaws.services.glue.util.JsonOptions
import com.amazonaws.services.glue.DynamicFrame
import org.apache.spark.SparkContext
import scala.collection.JavaConverters._

object GlueApp {
  val DEFAULT_URI: String = "mongodb://<an_ip_from_atlas_project_ip_access_list>:27017"
  val WRITE_URI: String = "mongodb://<an_ip_from_atlas_project_ip_access_list>:27017"
  lazy val defaultJsonOption = jsonOptions(DEFAULT_URI)
  lazy val writeJsonOption = jsonOptions(WRITE_URI)
  def main(sysArgs: Array[String]): Unit = {
    val spark: SparkContext = new SparkContext()
    val glueContext: GlueContext = new GlueContext(spark)
    val args = GlueArgParser.getResolvedOptions(sysArgs, Seq("JOB_NAME").toArray)
    Job.init(args("JOB_NAME"), glueContext, args.asJava)

    // Get DynamicFrame from MongoDB
    val resultFrame: DynamicFrame = glueContext.getSource("mongodb", defaultJsonOption).getDynamicFrame()

    // Write DynamicFrame to MongoDB and DocumentDB
    glueContext.getSink("mongodb", writeJsonOption).writeDynamicFrame(resultFrame)

    Job.commit()
  }

  private def jsonOptions(uri: String): JsonOptions = {
    new JsonOptions(
      s"""{"uri": "${uri}",
         |"database":"test",
         |"collection":"coll",
         |"username": "username",
         |"password": "pwd",
         |"ssl":"true",
         |"ssl.domain_match":"false",
         |"partitioner": "MongoSamplePartitioner",
         |"partitionerOptions.partitionSizeMB": "10",
         |"partitionerOptions.partitionKey": "_id"}""".stripMargin)
  }
}

您可能需要将身份验证源分配为要连接的集群中的数据库。
mongodb://<an_ip_from_atlas_project_ip_access_list>:27017?authSource=test

参考

  1. 文档.atlas.mongodb.com。 2021.连接到集群 [在线]网址:https://docs.atlas.mongodb.com/connect-to-cluster
  2. 文档.aws.amazon.com。 2021.示例:设置连接类型和选项 [在线] 网址:https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect-samples.html
  3. 文档.mongodb.com。 2021.配置选项 [在线] 网址:https://docs.mongodb.com/spark-connector/master/configuration#partitioner-conf
  4. 文档.mongodb.com。 2021.连接字符串 URI 格式 [在线]网址:https://docs.mongodb.com/manual/reference/connection-string/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM