Données d'entrée :
- une table de ruche (T) avec 35 fichiers (~1.5GB chacun, SequenceFile)
- les fichiers sont dans un seau gs
- par défaut fs.gs.block.size=~128MB
- tous les autres paramètres sont par défaut
Expérience 1 :
- créer un dataproc avec 2 workers (4 core par worker)
- run select count(*) from T ;
Résultat de l'expérience 1 :
- ~650 tâches créées pour lire les fichiers de la table de ruche
- chaque tâche lit ~85MB de données
Expérience 2 :
- créer une dataproc avec 64 workers (4 core par worker)
- run select count(*) from T ;
Résultat de l'expérience 2 :
- ~24 480 tâches créées pour lire les fichiers de la table de ruche
- chaque tâche lit ~2.5MB de données (il me semble qu'une tâche lisant 2,5MB de données n'est pas une bonne idée car le temps d'ouverture du fichier serait probablement plus long que la lecture de 2,5MB).
Q1 : Une idée de la façon dont spark détermine le nombre de tâches pour lire les fichiers de données des tables de ruche ? J'ai répété les mêmes expériences en mettant les mêmes données dans hdfs et j'ai obtenu des résultats similaires.
Si je comprends bien, le nombre de tâches pour lire les fichiers de la table de ruche devrait être le même que le nombre de blocs dans hdfs. Q2 : Est-ce exact ? Q3 : Est-ce également correct lorsque les données sont dans le seau gs (au lieu de hdfs) ?
Merci d'avance !