><code>beginTransaction - </code>to begin the transaction, we create a temporary file in a temporary directory on our destination file system. Subsequently, we can write data to this file as we process it.</li>
<li><code>preCommit - </code>on pre-commit, we flush the file, close it, and never write to it again. We&rsquo;ll also start a new transaction for any subsequent writes that belong to the next checkpoint.</li>
<li><code>commit - </code>on commit, we atomically move the pre-committed file to the actua