Interesting. If the map-reduce job reduce job requires writing to the datastore and the article suggests disabling writes while it runs, this would suggest inconsistent expectations about its behavior. Either the map-reduce behavior should not require writes or the article is incorrect and should be changed. Either way, this may be an issue with the platform.
I would recommend filing a public issue on the Issue Tracker. When doing so, please include the relevant error logs along with minimal reproduction that exemplifies this error. Be sure to also post a link to the issue here so that others in the community can also follow along.
As for encoding protobuf data into json, I'd recommend using Google's
protobuf library and looking at the
json_format module to achieve your goals.