2012-10-02 3 views
3

Comment utiliser flume pour lire continuellement de mysql à charger à hbase?Comment utiliser flume pour lire les données de mysql?

Je suis familier avec sqoop mais j'ai besoin de le faire continuellement à partir d'une source mysql. Est-il nécessaire d'avoir une source personnalisée pour cela?

+0

Presque le même que http://stackoverflow.com/questions/10548538/flume-to-migrate-data-from-mysql-to-hadoop –

Répondre

0

Il y a un certain nombre de manières de faire ceci, mais j'écrirais un script qui prend vos données de MySQL et génère un événement Avro pour chacun.

Vous pouvez ensuite utiliser la source Avro intégrée pour recevoir ces données et les envoyer au récepteur HDFS.

0

Sqoop est bon pour l'importation en vrac de SGBDR vers HDFS/Hive/HBase. Si c'est une importation ponctuelle, c'est très bien, elle fait ce qu'elle promet sur papier. Mais le problème vient quand vous voulez avoir des mises à jour incrémentielles en temps réel. Entre deux types de mises à jour incrémentielles Sqoop prend en charge:

Ajout, celui-ci vous permet de réexécuter le travail SQoop, et chaque nouveau travail commence là où le dernier ancien travail se termine. par exemple. Le premier travail Sqoop seulement importé la ligne 0-100, puis le prochain travail commencera à partir de 101 en fonction de --last-value = 100. Mais même si 0-100 a été mis à jour, le mode Append ne les couvrira plus.

Dernière modification, celui-ci est encore pire IMHO, il nécessite que la table source a un champ d'horodatage qui indique quand la ligne est la dernière mise à jour. Ensuite, en fonction de l'horodatage, il effectue l'importation des mises à jour incrémentielles. Si la table source n'a rien de tel, celle-ci n'est pas utile.

Je dirais que si vous avez la main sur votre source db, vous pouvez choisir le dernier mode modifié en utilisant Sqoop.

Questions connexes