La methode repartition applicable sur un DataSet n’utilise pas la même fonction de hash que les RDD (API 1.6), il est donc possible que deux entiers aient le même hash rendant ainsi cette méthode inutile dans notre cas.
Une solution est d’utiliser la méthode partitionBy qui peut s’utiliser sur un DataFrameWriter (s’obtenant par df.write
avec df notre DataSet). Cette méthode prend un nom de colone comme argument sous la forme d’une String. Au moment de sauvegarder les fichiers un dossier sera créé pour chaque valeur différente de cette colone. Par exemple dans notre cas on pourrait avoir :
/mnt/data # hdfs dfs -ls /sdss9.json
Found 25 items
-rw-r--r-- 1 root supergroup 0 2016-11-14 17:00 /sdss9.json/_SUCCESS
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=0.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=1.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=10.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=11.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=12.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=13.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=14.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=15.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=16.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=17.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=18.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=19.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=2.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=20.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=21.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=22.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=23.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=3.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=4.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=5.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=6.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=7.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=8.0
drwxr-xr-x - root supergroup 0 2016-11-14 17:00 /sdss9.json/modulo=9.0
Pour le moment plusieurs partitions sont créées par modulo, il faudrait en n’avoir qu’une seule afin de faciliter les déplacements eventuels.
Le plus long est le téléchargement des dépendances, il suffit donc de mettre ces dépendences en cache :
cache:
mount:
- /drone/.m2/repository
Ainsi que de rajouter cette option a maven : -Dmaven.repo.local=/drone/.m2/repository
Attention : il n’est possible de mettre en cache que les sous-dossiers de /drone
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 55.950 s
[INFO] Finished at: 2016-11-15T14:35:27+00:00
[INFO] Final Memory: 38M/254M
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15.874 s
[INFO] Finished at: 2016-11-15T14:46:05+00:00
[INFO] Final Memory: 35M/291M
[INFO] ------------------------------------------------------------------------