Transaktionale Schreibvorgänge in den cloudspeicher mit dbio Transactional writes to cloud storage with DBIO

Das databricks dbio-Paket bietet transaktionale Schreibvorgänge in den cloudspeicher für Apache Spark Aufträge.The Databricks DBIO package provides transactional writes to cloud storage for Apache Spark jobs. Dies löst eine Reihe von Leistungs-und Korrektur Problemen aus, die auftreten, wenn Spark in einer cloudbasierten Einstellung verwendet wird (z. b. beim direkten schreiben in Speicherdienste).This solves a number of performance and correctness issues that occur when Spark is used in a cloud-native setting (for example, writing directly to storage services).

Mit dbio transaktionalem Commit werden Metadatendateien, die mit beginnen, mit _started_<id> und _committed_<id> Datendateien begleitet, die von Spark-Aufträgen erstellt werdenWith DBIO transactional commit, metadata files starting with _started_<id> and _committed_<id> accompany data files created by Spark jobs. Im Allgemeinen sollten Sie diese Dateien nicht direkt ändern.Generally you shouldn’t alter these files directly. Stattdessen sollten Sie den Befehl verwenden VACUUM , um Sie zu bereinigen.Rather, you should use the VACUUM command to clean them up.

Dateien ohne Commit bereinigen Clean up uncommitted files

Verwenden Sie zum Entfernen von Dateien, für die kein Commit ausgeführt wurde, von Spark-Aufträgen, den VACUUM Befehl, um Sie zu entfernen.To clean up uncommitted files left over from Spark jobs, use the VACUUM command to remove them. VACUUMDies geschieht normalerweise automatisch nach Abschluss der Spark-Aufträge, Sie können Sie jedoch auch manuell ausführen, wenn ein Auftrag abgebrochen wird.Normally VACUUM happens automatically after Spark jobs complete, but you can also run it manually if a job is aborted.

Entfernt beispielsweise VACUUM ... RETAIN 1 HOUR Dateien ohne Commit, die älter als eine Stunde sind.For example, VACUUM ... RETAIN 1 HOUR removes uncommitted files older than one hour.

Wichtig

  • Vermeiden Sie das Absaugen mit einem Horizont von weniger als einer Stunde.Avoid vacuuming with a horizon of less than one hour. Dies kann zu Daten Inkonsistenz führen.It can cause data inconsistency.

Siehe auch " Vacuum".Also see Vacuum.

SQLSQL

-- 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]

ScalaScala

// recursively vacuum an output path
spark.sql("VACUUM '/path/to/output/directory' [RETAIN <N> HOURS]")

// vacuum all partitions of a catalog table
spark.sql("VACUUM tableName [RETAIN <N> HOURS]")