2017-10-18 27 views
0

J'ai un travail SQOOP qui charge des données directement à partir d'une base de données Oracle vers un schéma Hive sur un cluster Microsoft Azure HDInsights Hadoop. Bien que, lors de l'importation char champs basés (tels que les variables varchar) j'ai découvert que ceux-ci sont importés en tant que chaînes. Cela n'a rien de mal et cela fonctionne parfaitement pour moi. Cependant, il y a un petit inconvénient, qui est le fait que le champ chaîne dans la base de données Hive prend la longueur maximale de ce champ. Cela impliquera l'utilisation de la fonction TRIM chaque fois que j'effectue une condition sur ce champ. Existe-t-il un paramètre ou une solution de contournement SQOOP qui me permet de ne pas utiliser TRIM?Est-il possible d'utiliser des tables importées SQOOP sans la fonction TRIM?

Meilleures salutations

Répondre

0

Vous pouvez importer des données avec varchar et pour éviter l'obtenir converti sous forme de chaîne. Vous pouvez utiliser l'argument --map-column-hive pour y parvenir. Cet argument remplace le mappage par défaut du type SQL au type Hive pour les colonnes configurées.

Utilisation:

sqoop import <generic args> --map-column-hive column_name=varchar(200) 
+0

Je l'ai déjà examiné cette question, mais je dois être un peu plus agnostique sur spécifiant le nom de la table que je suis l'importation d'une base de données avec + - 200 tables. En tant que tel, je préférerais ne pas spécifier de colonne particulière. En ce sens, pensez-vous que cela peut être fait? –

+0

Sqoop ne dispose pas d'une telle fonctionnalité sauf ceci mais grâce à un développement personnalisé où vous pouvez mapper le dataype de la source à Hive, il peut être résolu. –

+0

Ok, merci quand même;) –