Tutoriels scala

18 tutoriels en accès libre sur scala : guides techniques, sans compte.

foldByKey, aggregateByKey et combineByKey en Spark

reduceByKey impose le même type en entrée et en sortie, ce qui rend une moyenne impossible. Les trois agrégateurs qui lèvent cette contrainte.

6 minsparkscalarddaggregatebykeycombinebykeybig-data

cache, persist et checkpoint en Spark : quoi garder ?

Un cache mal placé ralentit un job. Les niveaux de persist, la différence RDD/DataFrame, l’unpersist oublié, et le cas où seul checkpoint suffit.

6 minsparkscalacachepersistperformancebig-data

coalesce vs repartition en Spark, démontré avec glom()

Deux méthodes au même argument, deux travaux différents. Démonstration avec glom(), le piège du coalesce(7) qui reste à 5, et la règle pour choisir.

7 minsparkscalarddpartitionscoalescerepartitionbig-data

RDD, List Scala ou table SQL : ce que « distribué » change

Un RDD n’est pas une table, ni une List plus grosse. Ce que le distribué retire (index, évaluation immédiate), et en quoi Spark SQL diffère du SQL.

7 minsparkscalarddspark-sqlbig-data

createOrReplaceTempView : les vues temporaires Spark

Une vue temporaire n’est ni une table, ni un cache. Sa portée, sa durée de vie, le préfixe global_temp qui piège tout le monde, et l’équivalent Scala de l’exemple PySpark.

7 minsparkpysparkscalaspark-sqlbig-data

defaultParallelism : combien de cœurs Spark utilise-t-il ?

Spark déduit le nombre de partitions des cœurs qu’il croit avoir. Le code pour afficher ce chiffre, d’où il vient, et le piège des deux réglages.

6 minsparkscalarddpartitionsdefaultparallelismbig-data

groupBy, groupByKey, reduceByKey et sortByKey en Spark

Quatre opérations qui se ressemblent et un choix qui change la facture cloud. Pourquoi reduceByKey bat groupByKey, et les pièges du tri de clés.

7 minsparkscalarddgroupbyreducebykeybig-data

inferSchema en Spark : ce que cette option coûte

Oui, Spark relit tout le fichier pour deviner les types. Mais le vrai problème n’est pas la lenteur : c’est le type qui change et casse le pipeline sans erreur.

6 minsparkscalapysparkcsvschemabig-data

Joins en Spark : broadcast, shuffle et skew

Un join qui met une heure au lieu de trois minutes, c’est la stratégie choisie. Broadcast, sort-merge, skew : quand chacun s’applique et comment forcer.

6 minsparkscalajoinshufflebig-data

Écrire en Spark : Parquet, Delta Lake, petits fichiers

Comment écrire en Parquet ou Delta Lake sans noyer le stockage : partitionnement, taille des fichiers, et le moment où Delta devient indispensable.

6 minsparkscalaparquetdelta-lakebig-data

Partitions et shuffle en Spark : bien les régler

Vos jobs tournent avec 200 partitions par défaut, et c’est presque toujours faux. La règle des 128 Mo, repartition, coalesce et l’AQE de Spark 3.

6 minsparkscalapartitionsshufflebig-data

Pourquoi 100 partitions ne font pas 100 processeurs

Une partition est une tâche potentielle, pas un cœur. L’exécution par vagues, et comment inspecter les partitions avec mapPartitionsWithIndex.

8 minsparkscalarddpartitionstachesbig-data

RDD, DataFrame ou Dataset : lequel choisir en Spark

Trois API pour le même moteur, mais un seul optimiseur les comprend. Pourquoi le DataFrame gagne presque toujours, et les trois cas où le RDD reste indispensable.

7 minsparkscalardddataframebig-data

Spark RDD par l’exemple : le word count en Scala

Le word count de Spark décortiqué ligne par ligne en Scala : flatMap, map, reduceByKey, saveAsTextFile sur un cas concret, avec les pièges classiques.

5 minsparkscalarddbig-data

sc, spark, SparkContext, SparkSession : qui fait quoi

Les tutoriels écrivent tantôt `sc.parallelize`, tantôt `spark.read` sans dire ce que sont ces objets. La différence, l’historique, et lequel utiliser.

5 minsparkscalasparksessionbig-data

Scala ou PySpark : lequel choisir pour Spark ?

On répète que Scala est plus rapide que PySpark. C’est vrai dans un cas précis et faux ailleurs. Ce qui se passe sous le capot, et comment choisir.

6 minsparkscalapysparkpythonbig-data

UDF Spark : pourquoi la vôtre est dix fois plus lente

Une UDF est une boîte noire pour Catalyst : plus de codegen, plus de pushdown. Ce que vous perdez, et comment la remplacer par des fonctions natives.

5 minsparkscalaudfdataframeperformancebig-data

Spark : pourquoi votre job ne fait rien avant une action

map, filter, select ne lancent aucun calcul. count, collect, write si. Comprendre la frontière transformation / action évite 80 % des mauvaises surprises en Spark.

3 minsparkscalabig-data