Featured image of post Datalake : les principaux formats de fichiers

Datalake : les principaux formats de fichiers

Dans cet article je vous présente les principaux formats de fichier que l’on trouve dans un datalake.

Contexte

Lorsque vous travaillez avec un datalake vous allez manipuler un certain nombre de formats de fichier. Je vous présente ici ceux que vous rencontrerez le plus souvent.

Vous trouverez dans mes articles précédents les explications concernant :

Qu’est-ce qu’un fichier ?

La question peut sembler triviale pour certain j’ai rencontré suffisamment de personnes pour qui cela n’était pas clair pour prendre le temps de l’expliquer.
En informatique on utilise des fichiers pour stocker de l’information et des dossiers pour ranger nos fichiers dans des structures hiérarchiques.
Un fichier peut contenir tous types d’informations, du code binaire de vos programmes aux données des documents que vous réalisez avec ces programmes.
On appelle un format de fichier l’extension du fichier.
L’extension du fichier est simplement la suite de caractères se trouvant après le dernier point du nom complet du fichier. Les extensions sont souvent masquées dans l’explorateur de fichier de Windows.
Par exemple, MonFichier.json est un fichier de type json. Attention l’extension du fichier ne garantit en aucun cas que le contenu du fichier est bien celui prétendu par l’extension. Il s’agit simplement d’une convention, pas d’une contrainte. Enfin on peut distinguer 2 grands types de contenus dans nos fichiers :

  • les contenus texte, les fichiers sont lisibles et éditables avec un éditeur de texte.
  • les contenus binaires, les fichiers sont utilisables avec des programmes particuliers.

JSON

Les fichiers JSON :

  • on en général l’extension .json
  • ils contiennent du texte
  • ils sont produits par des systèmes automatisés comme des API.

Un fichier JSON permet de stocker de l’information hiérarchique, en effet ce format provient de la programmation est est utilisé pour stockée des objets complexes.
Pour faire simple, dans un JSON vous stockez des couples clé/valeur sous la forme “MaClé”: “MaValeur” chaque couple est séparé par une virgule.
La valeur peut être :

  • Une chaine de caractères, dans ce cas elle est entre quote ".
  • une valeur numérique, dans ce cas elle est saisie directement après les 2 points. On utilise le point comme séparateur décimal.
  • un valeur booléenne, dans ce cas on saisie directement true ou false sans quote.
  • un objet, qui n’est défini comme un ensemble de clés/valeur correspondant à une clé. Dans ce cas la valeur se trouve entre accolades.
  • un tableau, qui peut contenir plusieurs valeurs de n’importe quel type.

Voici un exemple de fichier JSON :

1
2
3
4
5
6
7
8
{
  "MonObjet": {"Nom" : "Nom de mon objet", "Quantite" : 10},
  "MonTableauDeNombre": [1,2,3],
  "MonTableauDObjet": [
      {"Titre": "Mon livre", "Auteur": "Max"}, 
      {"Titre": "Mon second livre", "Auteur": "Max"}
      ]
}

CSV

Les fichiers CSV :

  • on en général l’extension .csv
  • ils contiennent du texte
  • ils sont produits par des systèmes automatisés comme des exports de logiciel métier.
  • le format peut différer en fonction des informations régionales utilisées pour le produire.

Un fichier CSV permet de stocker de l’information sous la forme d’un tableau de données.
On retrouve une ligne dans le fichier par ligne dans la table, toutes les lignes du fichier doivent avoir la même structure.

Pour chaque fichier CSV on doit connaitre les informations le constituant afin de pouvoir le lire sans erreur, notamment :

  • Quel est le séparateur de colonne, le point-virgule en français ou la virgule en américain.
  • Quel est le séparateur décimal, la virgule en français ou le point en américain.
  • Qu’elle est de délimiteur de colonne s’il existe, en général la double quote " qui permet d’utiliser les séparateurs de colonnes dans du texte sans qu’il soit interprété.
  • Si la première ligne est l’en tête des colonnes ou une ligne de données.

Voici un exemple de fichier CSV américain :

1
2
3
Titre,Auteur,Quantité
Mon livre, Max, 10
Mon second livre, Max, 25

Excel

Les fichiers Excel :

  • on en général l’extension .xls ou .xlsx.
  • ils contiennent des données binaires.
  • ils sont produits par Microsoft Excel ou des systèmes d’export de données.
  • le nombre de lignes d’une feuille de calcul est limité (1 048 576 lignes pour les fichiers xlsx)

Les fichiers Excel sont en général une source de problème, car étant à la main des utilisateurs, ils ont tendance à modifier la structure de leur fichier sans connaitre les conséquences sur les traitements de données utilisant leurs fichiers.
Attention on trouve encore beaucoup de fichier Excel 97-2003, ceux avec l’extension xls, ce format de fichier est vieillissant. Évitez-les si vous le pouvez.

Parquet

Les fichiers Parquet :

  • on en général l’extension .parquet.
  • ils contiennent des données binaires.
  • ils sont inmutables, une fois le fichier créer vous ne pouvez pas modifier sont contenu.

Les fichiers parquet sont le format roi des datalakes. Ils stockent des tables et apportent grand nombre de services :

  • Présence des métadonnées de la table
    • nom de colonne
    • type de données
  • Stockage colonne optimisée pour les traitements analytiques.
  • Compression des données.

Étant inmutable, l’utilisation de ces fichiers demande une bonne stratégie d’alimentation pour optimiser vos traitements. En général on trouve les scénarii suivant :

  • Remplacement intégral des fichiers avec la nouvelle version des données.
  • Remplacement partiel des fichiers avec un sous-ensemble des données, on ne remplace que certains fichiers, chaque fichier correspond à une partition de données connue.
  • Ajout uniquement des nouvelles données dans de nouveaux fichiers.

Le format parquet est un format open source géré par la fondation Apache.

Delta lake

La gestion des suppression et modification de données dans le système source n’est pas simple à gérer avec les fichiers parquets.
Afin de simplifier cela, il existe le format Delta lake qui permet de gérer ces problèmes. Le résultat est un ensemble de fichiers parquet et json qui représente l’état des données. Chaque modification créée de nouveaux fichiers. Vous trouverez plus d’information sur le site de delta lake.

Merci de votre attention.

comments powered by Disqus
Généré avec Hugo
Thème Stack conçu par Jimmy