2
votes

Sqoop peut-il être utilisé pour effectuer des jointures sur l'IMPORT?

On m'a posé cette question récemment où je décrivais un cas d'utilisation qui impliquait plusieurs jointures en plus de certains traitements que j'avais implémentés dans Spark, la question était de savoir si les jointures n'avaient pas été effectuées lors de l'importation des données vers HDFS en utilisant Sqoop? Je voulais comprendre d'un point de vue architectural s'il est conseillé d'implémenter les jointures dans Sqoop même si c'est possible.


0 commentaires

4 Réponses :


0
votes

Cela dépend de l'infrastructure de votre pipeline de données, si vous utilisez Spark à d'autres fins, il sera préférable d'utiliser le même Spark pour importer les données également. Sqoop prend en charge la jointure et sera suffisant si vous n'avez besoin que d'importer des données et rien d'autre. J'espère que cela répond à votre question.


0 commentaires

4
votes

Il est possible de faire des jointures dans les importations sqoop.

D'un point de vue d'architecture, cela dépend de votre cas d'utilisation, sqoop est principalement un utilitaire d'import / export rapide. Tout l'ETL peut être fait via spark / pig / hive / impala.

Bien que ce soit faisable, je recommanderais de ne pas le faire, car cela augmentera l'efficacité du temps de votre travail et augmentera la charge de votre source pour le calcul des jointures / agrégations, ainsi que sqoop a été principalement conçu pour être un outil d'ingestion pour les sources structurées .


0 commentaires

0
votes

Vous pouvez utiliser:

  • une vue dans le SGBD où la lecture à partir de sqoop eval permet de définir des paramètres dans la base de données, en option.
  • SQL de forme libre pour sqoop où JOIN est défini

Cependant, les vues avec JOIN ne peuvent pas être utilisées pour les importations incrémentielles.

La possibilité d'utiliser des requêtes de forme libre dans la version actuelle de Sqoop est limité aux requêtes simples où il n'y a pas de projections ambiguës et aucune condition OR dans la clause WHERE. Utilisation de requêtes complexes telles que sous forme de requêtes comportant des sous-requêtes ou des jointures conduisant à des les projections peuvent conduire à des résultats inattendus.


2 commentaires

Seriez-vous capable de comparer les jointures performantes dans Sqoop et les effectuer dans Spark en ce qui concerne le temps de réponse et le travail interne vis-à-vis du traitement parallèle?


C'est une question différente. Mais les deux ont la capacité de partitionner les données sur des tables de base. Sur les vues, ce n'est pas le cas.



0
votes

L'outil d'importation Sqoop prend en charge la jointure. Il peut être archivé en utilisant l'option --query (n'utilisez pas cette option avec --table / --column).


0 commentaires