2017-03-17 1 views
0

J'ai une table dans MySQL Je veux importer des données en utilisant sqoop. J'ai importé les données et stocké dans HDFS comme file. Maintenant, je veux exécuter la mise à jour incrémentielle sur ce fichier dans hdfs.Ajout incrémentiel au fichier

Disons que j'ai 100 lignes dans la table MYSQL. Le fichier dans HDFS contient des données valant 50 premières lignes. Comment puis-je mettre à jour ce fichier de manière incrémentielle?

I am talking about files not Hive tables.

Je souhaite des données incrémentielles en tant que fichier distinct non fusionné. Par exemple, le premier fichier contient 50 enregistrements, puis j'ai besoin d'un fichier contenant les 50 enregistrements suivants. Je veux dire peut-on faire une mise à jour incrémentielle sur les fichiers?

+0

50 enregistrements suivants sont de nouveaux enregistrements ou il peut être mis à jour les dossiers aussi? –

+0

@dev ツ Il peut être à la fois –

+1

@dev ツ Je pense que je vous ai confus s'il vous plaît jeter un oeil à la question éditée –

Répondre

0

Vous ne pouvez pas mettre à jour le fichier HDFS dans ce cas.

Mais ceci est un cas d'utilisation courant. sqoop-merge outil peut résoudre ce problème. Vous devez effectuer l'importation incrémentielle de sqoop et enregistrer la sortie dans différents fichiers hdfs.

Comme par documentation,

L'outil de fusion permet de combiner deux ensembles de données où les entrées dans un jeu de données doivent remplacer les entrées d'un ensemble de données plus. Par exemple, un cycle d'importation incrémentiel en mode modifié en dernier génère plusieurs jeux de données dans HDFS où des données successivement plus récentes apparaissent dans chaque ensemble de données. L'outil de fusion va "aplatir" deux ensembles de données en un, en prenant les derniers enregistrements disponibles pour chaque clé primaire.

Exemple de commande:

sqoop merge --new-data newer --onto older --target-dir merged \ 
--jar-file datatypes.jar --class-name Foo --merge-key id