Aller au contenu principal

Écritures transactionnelles vers le stockage cloud avec DBIO

important

Cette documentation a été retirée et pourrait ne pas être mise à jour. Les produits, services ou technologies mentionnés dans ce contenu ne sont plus pris en charge. Consultez Que sont les garanties ACID sur Databricks ?

Le package Databricks DBIO fournit des écritures transactionnelles vers le stockage cloud pour les jobs Apache Spark. Ceci résout un certain nombre de problèmes de performance et de justesse qui surviennent lorsque Spark est utilisé dans un environnement cloud-natif (par exemple, l'écriture directe vers les services de stockage).

important

Le protocole de commit n'est pas respecté lorsque vous accédez aux données via des chemins se terminant par *. Par exemple, la lecture de dbfs:/my/path ne renverra que les modifications validées, tandis que la lecture de dbfs:/my/path/* renverra le contenu de tous les fichiers de données du répertoire, que leur contenu ait été validé ou non. Ceci est un comportement attendu.

Avec le commit transactionnel DBIO, les fichiers de métadonnées commençant par _started_<id> et _committed_<id> accompagnent les fichiers de données créés par les jobs Spark. En général, vous ne devriez pas modifier ces fichiers directement. Vous devriez plutôt utiliser la commande VACUUM pour les nettoyer.

Nettoyer les fichiers non validés

Pour nettoyer les fichiers non validés restants des Jobs Spark, utilisez la commande VACUUM pour les supprimer. Normalement, VACUUM se produit automatiquement une fois les Jobs Spark terminés, mais vous pouvez également l'exécuter manuellement si un Job est annulé.

Par exemple, VACUUM ... RETAIN 1 HOUR supprime les fichiers non validés datant de plus d'une heure.

important
  • Évitez le vacuuming avec un horizon de moins d’une heure. Cela peut provoquer des incohérences dans les données.

Voir aussi VACUUM.

SQL
-- recursively vacuum an output path
VACUUM '/path/to/output/directory' [RETAIN <N> HOURS]

-- vacuum all partitions of a catalog table
VACUUM tableName [RETAIN <N> HOURS]