Amazon-DocumentDB-Verbindungen - AWS Glue

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon-DocumentDB-Verbindungen

Sie können AWS Glue for Spark verwenden, um aus Tabellen in Amazon DocumentDB zu lesen und in Tabellen zu schreiben. Sie können eine Verbindung zu Amazon DocumentDB herstellen, indem Sie Anmeldeinformationen verwenden, AWS Secrets Manager die über eine AWS Glue-Verbindung gespeichert sind.

Weitere Informationen zu Amazon DocumentDB finden Sie in der Dokumentation zu Amazon DocumentDB.

Anmerkung

Elastische Amazon DocumentDB-Cluster werden derzeit nicht unterstützt, wenn der AWS Glue-Connector verwendet wird. Weitere Informationen zu elastischen Clustern finden Sie unter Verwendung von elastischen Amazon-DocumentDB-Clustern.

Lesen und Schreiben in Amazon DocumentDB-Sammlungen

Anmerkung

Wenn Sie einen ETL-Auftrag erstellen, der eine Verbindung mit Amazon DocumentDB herstellt, müssen Sie für die Connections-Auftragseigenschaft ein Verbindungsobjekt festlegen, das die Virtual Private Cloud (VPC) angibt, in der Amazon DocumentDB ausgeführt wird. Beim Verbindungsobjekt muss der Verbindungstyp „JDBC“ und JDBC URL muss „mongo://<DocumentDB_host>:27017“ sein.

Anmerkung

Diese Codebeispiele wurden für AWS Glue 3.0 entwickelt. Informationen zur Migration auf AWS Glue 4.0 finden Sie unterMongoDB. Der uri-Parameter hat sich geändert.

Anmerkung

Wenn Sie Amazon DocumentDB verwenden, muss retryWrites in bestimmten Situationen auf „false“ gesetzt werden, z. B. wenn das geschriebene Dokument _id angibt. Weitere Informationen finden Sie unter Funktionsunterschiede zu MongoDB in der Dokumentation zu Amazon DocumentDB.

Das folgende Python-Skript veranschaulicht die Verwendung von Verbindungstypen und Verbindungsoptionen zum Lesen und Schreiben in Amazon DocumentDB.

import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext, SparkConf from awsglue.context import GlueContext from awsglue.job import Job import time ## @params: [JOB_NAME] args = getResolvedOptions(sys.argv, ['JOB_NAME']) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(args['JOB_NAME'], args) output_path = "s3://some_bucket/output/" + str(time.time()) + "/" documentdb_uri = "mongodb://<mongo-instanced-ip-address>:27017" documentdb_write_uri = "mongodb://<mongo-instanced-ip-address>:27017" read_docdb_options = { "uri": documentdb_uri, "database": "test", "collection": "coll", "username": "username", "password": "1234567890", "ssl": "true", "ssl.domain_match": "false", "partitioner": "MongoSamplePartitioner", "partitionerOptions.partitionSizeMB": "10", "partitionerOptions.partitionKey": "_id" } write_documentdb_options = { "retryWrites": "false", "uri": documentdb_write_uri, "database": "test", "collection": "coll", "username": "username", "password": "pwd" } # Get DynamicFrame from DocumentDB dynamic_frame2 = glueContext.create_dynamic_frame.from_options(connection_type="documentdb", connection_options=read_docdb_options) # Write DynamicFrame to MongoDB and DocumentDB glueContext.write_dynamic_frame.from_options(dynamic_frame2, connection_type="documentdb", connection_options=write_documentdb_options) job.commit()

Das folgende Scala-Skript veranschaulicht die Verwendung von Verbindungstypen und Verbindungsoptionen zum Lesen und Schreiben in Amazon DocumentDB.

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 DOC_URI: String = "mongodb://<mongo-instanced-ip-address>:27017" val DOC_WRITE_URI: String = "mongodb://<mongo-instanced-ip-address>:27017" lazy val documentDBJsonOption = jsonOptions(DOC_URI) lazy val writeDocumentDBJsonOption = jsonOptions(DOC_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 DocumentDB val resultFrame2: DynamicFrame = glueContext.getSource("documentdb", documentDBJsonOption).getDynamicFrame() // Write DynamicFrame to DocumentDB glueContext.getSink("documentdb", writeJsonOption).writeDynamicFrame(resultFrame2) 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) } }

Referenz zur Amazon-DocumentDB-Verbindungsoption

Bezeichnet eine Verbindung zu Amazon DocumentDB (mit MongoDB-Kompatibilität).

Die Anschlussmöglichkeiten bei einer Quellverbindung und eine Senkenverbindung unterscheiden sich.

„connectionType“: „documentdb“ als Quelle

Verwenden Sie die folgenden Verbindungsoptionen mit "connectionType": "documentdb" als Quelle:

  • "uri": (Erforderlich) Der als mongodb://<host>:<port> zu formatierende Amazon-DocumentDB-Host, aus dem gelesen werden soll.

  • "database": (Erforderlich) Die Amazon-DocumentDB-Datenbank, aus der gelesen werden soll.

  • "collection": (Erforderlich) Die Amazon-DocumentDB-Sammlung, aus der gelesen werden soll.

  • "username": (Erforderlich) Der Amazon-DocumentDB-Benutzername.

  • "password": (Erforderlich) Das Amazon-DocumentDB-Passwort.

  • "ssl": (Erforderlich bei Verwendung von SSL) Wenn Ihre Verbindung SSL verwendet, müssen Sie diese Option mit dem Wert "true" einfügen.

  • "ssl.domain_match": (Erforderlich bei Verwendung von SSL) Wenn Ihre Verbindung SSL verwendet, müssen Sie diese Option mit dem Wert "false" einfügen.

  • "batchSize": (Optional): Die Anzahl der pro Batch zurückzugebenden Dokumente, die innerhalb des Cursors interner Batches verwendet werden.

  • "partitioner": (Optional): Der Klassenname des Partitionierers zum Lesen von Eingabedaten aus Amazon DocumentDB. Der Konnektor stellt die folgenden Partitionierer bereit:

    • MongoDefaultPartitioner(Standard) (In AWS Glue 4.0 nicht unterstützt)

    • MongoSamplePartitioner(In AWS Glue 4.0 nicht unterstützt)

    • MongoShardedPartitioner

    • MongoSplitVectorPartitioner

    • MongoPaginateByCountPartitioner

    • MongoPaginateBySizePartitioner(In AWS Glue 4.0 nicht unterstützt)

  • "partitionerOptions" (Optional): Optionen für den angegebenen Partitionierer. Die folgenden Optionen werden für jeden Partitionierer unterstützt:

    • MongoSamplePartitioner: partitionKey, partitionSizeMB, samplesPerPartition

    • MongoShardedPartitioner: shardkey

    • MongoSplitVectorPartitioner: partitionKey, partitionSizeMB

    • MongoPaginateByCountPartitioner: partitionKey, numberOfPartitions

    • MongoPaginateBySizePartitioner: partitionKey, partitionSizeMB

    Weitere Informationen zu diesen Optionen finden Sie unter Partitioner-Konfiguration in der MongoDB-Dokumentation.

„connectionType“: „documentdb“ als Senke

Verwenden Sie die folgenden Verbindungsoptionen mit "connectionType": "documentdb" als Senke:

  • "uri": (Erforderlich) Der als mongodb://<host>:<port> zu formatierende Amazon-DocumentDB-Host, in den geschrieben werden soll.

  • "database": (Erforderlich) Die Amazon-DocumentDB-Datenbank, in die geschrieben werden soll.

  • "collection": (Erforderlich) Die Amazon-DocumentDB-Sammlung, in die geschrieben werden soll.

  • "username": (Erforderlich) Der Amazon-DocumentDB-Benutzername.

  • "password": (Erforderlich) Das Amazon-DocumentDB-Passwort.

  • "extendedBsonTypes": (Optional) Wenn true, sind erweiterte BSON-Typen beim Schreiben von Daten in Amazon DocumentDB erlaubt. Der Standardwert ist true.

  • "replaceDocument": (Optional) Wenn true, wird das gesamte Dokument beim Speichern von Datasets, die ein _id-Feld enthalten, ersetzt. Wenn false, werden nur Felder im Dokument aktualisiert, die mit den Feldern im Dataset übereinstimmen. Der Standardwert ist true.

  • "maxBatchSize": (Optional): Die maximale Batchgröße für Massenvorgänge bei der Datenspeicherung. Der Standardwert ist 512.

  • "retryWrites": (Optional): Automatische Wiederholung bestimmter Schreibvorgänge ein einziges Mal, wenn AWS Glue auf einen Netzwerkfehler stößt.