Sqoop importation sans clé primaire dans SGBDR
Puis-je importer des SGBDR données de la table (table n'a pas une clé primaire) de la ruche à l'aide de sqoop? Si oui, pouvez-vous veuillez donner le sqoop commande importer.
J'ai essayé avec sqoop importation commandement général, mais il a échoué.
Vous devez vous connecter pour publier un commentaire.
Si votre table n'a pas de clé primaire définie, alors vous devez donner
-m 1
option pour importer les données ou que vous avez à offrir--split-by
argument avec quelques nom de la colonne, sinon il donne l'erreur:alors votre sqoop commande ressemblera à
ou
Vous pouvez importer des données à partir de SGBDR dans la ruche sans Primarykey.
Vous devez d'abord créer une table dans la ruche.Après cela, vous devez écrire le code suivant:
Dans le premier scénario à l'aide de 1 Mappeur ... Si la taille du fichier est très volumineux ce processus va prendre plus de temps pour répondre ou peut échouer. De vérifier la taille des données avant d'utiliser mappeur = 1 .
Quick view:
La Sqoop travail échoue et le message d'erreur ressemble à cette" Erreur lors de l'import: Aucune clé primaire n'a été trouvé pour le tableau . Veuillez spécifier un avec --split ou effectuer un séquentiel d'importation avec '-m 1' "
Description:
Habituellement, lorsque vous effectuez une Sqoop travail en interne, il recherche la clé primaire de la table. Si il n'y a pas de clé primaire de la Sqoop travail échoue et le message d'erreur ressemble à cette" Erreur lors de l'import: Aucune clé primaire n'a été trouvé pour le tableau . Veuillez spécifier un avec --split ou effectuer un séquentiel d'importation avec '-m 1' ". La suggestion décrit il y a deux approches alternatives à ce scénario.
Meilleur moyen est l'option 2
Pour spécifier le nombre de mappers 1 (par défaut, il prend 4). Donc, en spécifiant le nombre de mappers 1, la tâche sera séquentielle et identique à un seul thread tâche. Cela ne peut réussir que lorsque vous ciblez une petite table si dans le cas où si vous êtes à la recherche pour un grand importation ceci ne fonctionnera pas tant que la tâche a tendance à toujours courir.
La meilleure approche est d'utiliser split-par où vous pouvez spécifier le nombre de contributeurs sur les bases des colonnes indexées ou le fractionnement de la colonne manuellement( avec des requêtes ).
Utiliser la ligne suivante dans votre commande:
Import
doit utiliser un mappeur si une table n'a pas de clé primaire et pas de split-par colonne est fournie. Il ne peut pas être utilisé avec--split-by <col>
option.