2015-01-23 5 views
5

Ich habe eine Tabelle in MySQL mit 500 Millionen Datensätze. Ich möchte diese Tabelle auf Amazon DynamoDB.I importieren verstehen gibt es zwei Möglichkeiten, es zu tun:Kopieren von Daten von MySQL zu Amazon DynamoDB

  1. JAVA Api: Das Problem bei diesem Ansatz ist, dass es langsam ist, auch die Verbindung zur Datenbank manchmal fallen gelassen wird.

  2. Amazon Data Import Pipeline: Scheint vielversprechend, aber wie kann ich die Daten von MySQL in das von DynamoDB erkannte Format exportieren?

Bitte lassen Sie mich den bestmöglichen Ansatz zwischen den beiden.

Antwort

7

AWS verfügt über zwei Dienste, mit denen Sie diesen Vorgang ausführen können.

  • Daten Pipeline
  • EMR-Cluster mit Hive

Daten Pipeline

eine sehr einfache Art und Weise - wenn Ihr "Schemata" ähnlich sind (ich immer peinlich über Schema sprechen für DynamoDB) - wäre es, von MySQL nach S3 zu exportieren und dann von S3 nach DynamoDB zu importieren.

Daten Pipeline hat zwei Tutorials Sie einrichten dich Aufgaben können

http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-copydata-mysql.html http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-importexport-ddb-part1.html

Sie diesen Prozess weiter verbessern helfen, durch eine einzige Pipeline zu entwickeln, die den Import und den Export durchführen. Wenn Sie die Daten zwischen dem Import und dem Export transformieren müssen, müssen Sie Ihren Transformationscode entwickeln und aus der Pipeline ausführen.

In Data Pipeline Begriffe ist dies eine Aktivität aufrufen. Eine Aktivität kann so einfach sein wie ein Shell-Skript oder so komplex wie eine Hive/Hadoop/Pig-Anwendung, die auf einem EMR-Closer ausgeführt wird. http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-concepts-activities.html

Mit der Datenpipeline können Sie die Ausführung in regelmäßigen Zeitabständen planen.

Hive und EMR

Bienenstock ist ein hadoop Werkzeug zu schreiben SQL-Datenquellen zu manipulieren Befehle. Hive übersetzt das SQL in eine Hadoop-Anwendung, die auf einem Cluster ausgeführt wird. Sie können Hive auf AWS Elastic Map Reduce Cluster (einem Hadoop-Cluster für verwalteten Dienst) ausführen.

Hive on EMR kann Verbindungen zu nicht relationalen Datenquellen herstellen, z. B. Dateien auf S3- oder DynamoDB-Datenbanken. Es ermöglicht Ihnen, SQL-Anweisungen auf DynamoDB zu schreiben!

In Ihrem Anwendungsfall müssen Sie ein Hive-Skript schreiben, das von MySQL liest und in DynamoDB schreibt. Sie können die Daten mithilfe von Standard (Hive) SQL-Ausdrücken transformieren.

Mehr über Hive auf EMR: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hive.html

Mehr über DynamoDB und Hive: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.Walkthrough.html http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMRforDynamoDB.html

0

Neben anderen Antwort, ich möchte, dass DynamoDB erwähnen erkennt csv oder tsv-Format-Dateien für Importieren. Wir können auch HIVE sql mit Elastic Map Reduce verwenden, um Daten aus einer csv Datei zu laden. Die einzige Sache, die wir berücksichtigen müssen, ist - wenn wir Windows verwenden, um die Tabelle auf csv zu dumpen, dann müssen wir sicherstellen, dass die Zeilenendung des Windows-Systems \r\n durch \n ersetzt wird, um es kompatibel mit Amazon zu machen.

+0

Vielen Dank, um meine Antwort @ Prabhu zu vervollständigen. Ich habe auch HIVE erwähnt. Bitte beachten Sie, dass das Konvertieren von \ r \ n in \ n keine Amazon-Anforderung ist, aber \ n ist der Standard für den Zeilenabschluss für Unix-Systeme und Linux. –

+0

das ist immer ein Schmerz! überall – OK999