Distcp over S3A always copies all source files no matter the files are changed or not. This is opposite to the statement in the doc below.
CopyMapper compares file length as well as block size before copying. While the file length should match, the block size does not. This is apparently because the returned block size from S3A is always 32MB.
I'd suppose we should update the documentation or make code change.