The spark statistics tracking doesn't correctly assess the size of the uploaded files as it only calls getFileStatus on the zero byte objects -not the yet-to-manifest files. Which, given they don't exist yet, isn't easy to do.
- Add getXAttr and listXAttr API calls to S3AFileSystem
- Return all S3 object headers as XAttr attributes prefixed "header." That's custom and standard (e.g header.Content-Length).
The setXAttr call isn't implemented, so for correctness the FS doesn't
declare its support for the API in hasPathCapability().
The magic commit file write sets the custom header
set the length of the data final data in the header
x-hadoop-s3a-magic-data-length in the marker file.
A matching patch in Spark will look for the XAttr
"header.x-hadoop-s3a-magic-data-length" when the file
being probed for output data is zero byte long.
As a result, the job tracking statistics will report the
bytes written but yet to be manifest.