2016-08-24 1 views
1

Ich plane, einen Stapel zu verwenden, der Hadoop, Hive und Impala für die Analyse großer Datenmengen verwendet. Ich habe das Setup bereit und jetzt versuche ich Daten aus einer MySQL-Tabelle zu importieren. Die Tabellengröße ist mehr als 500 GB, und ich plane Sqoop wie folgt zu verwenden:Importieren Sie eine große Menge an MySQL-Daten nach Hadoop

sqoop import --connect jdbc:mysql://remote_host_ip/database_name --username user_name -P --table table_name --hive-import --compression-codec=snappy --as-parquetfile --warehouse-dir=/user/hive/warehouse -m 1 

Gibt es eine andere bessere Methode, dies zu tun Import als diese 500 GB Daten über das Netzwerk beinhaltet übertragen. Ist es möglich, die Daten trotzdem zu komprimieren und in Hive zu importieren, damit Impala zur Abfrage verwendet werden kann?

+0

Ich habe nur die Datenbank als CSV exportiert, pipe es durch gzip und in HDFS. Ich gebe der Person, die das in ein Shell-Skript bekommt, einen Cookie :) –

+0

MySQL unterstützt die Komprimierung "on the wire" mit 'jdbc: mysql: // remote_host_ip/datenbankname? UseCompression = true 'vgl. https://dev.mysql.com/doc/connector-j/5.1/de/connector-j-reference-configuration-properties.html und http://torstens-tech-blog.blogspot.com/2012/08/ client-compression-with-mysql-in.html –

Antwort

1

Sqoop ist der beste Ansatz. Es ist sehr effizient in loser Schüttung.

Lesen Sie über die MySQL Hadoop Applier, die entwickelt wurde, um Echtzeit-Replikation von Ereignissen zwischen MySQL und Hadoop durchzuführen.

0

Sie können "-m 4" anstelle von "-m 1" einstellen. Dies würde ermöglichen, dass MySql-Daten parallel importiert werden, d. H. Anstatt 1 Mapper zu verwenden, der 500 GB überträgt, werden 4 Mapper verwendet, um die Daten parallel zu übertragen (125 GB unter Verwendung jedes Mappers).

0

SQOOP ist besser, um 500 GB Daten in das säulenförmige HDFS-Format zu importieren, das das Parquet-Dateiformat ist. Sie können aber '-m 12' verwenden, wodurch mehr parallele Mapper importiert werden.

Verwandte Themen