#
# # raw_protocol.py
#
# from mrjob.job import MRJob
# from mrjob.protocol import RawProtocol
#
# class RawProtocolExample(MRJob):
#
# INPUT_PROTOCOL = RawProtocol
# OUTPUT_PROTOCOL = RawProtocol
# INTERNAL_PROTOCOL = RawProtocol
#
# def mapper(self, key, value):
# assert key == "1001"
# assert value == "{\"value\":10}"
# yield "1001", "{\"value\":10}"
# def reducer(self, key, values):
# for value in values:
# assert key == "1001"
# assert value == "{\"value\":10}"
# yield "1001", "{\"value\":10}"
#
# if __name__ == '__main__':
# RawProtocolExample.run()
#
#
# echo '1001\t{"value":10}' | python raw_protocol.py
#
#
#
# Creating temp directory /tmp/raw_protocol.yiran.20160828.061913.768951
# Running step 1 of 1...
# reading from STDIN
# Streaming final output from /tmp/raw_protocol.yiran.20160828.061913.768951/output...
#
# 1001 {"value":10}
#
# Removing temp directory /tmp/raw_protocol.yiran.20160828.061913.768951...
#
#
#
#
# # raw_value_protocol.py
#
# from mrjob.job import MRJob
# from mrjob.protocol import RawValueProtocol
#
# class RawValueProtocolExample(MRJob):
#
# INPUT_PROTOCOL = RawValueProtocol
# OUTPUT_PROTOCOL = RawValueProtocol
# INTERNAL_PROTOCOL = RawValueProtocol
#
# def mapper(self, key, value):
# assert key == None
# assert value == "1001\t{\"value\":10}"
# yield "1001", "{\"value\":10}"
# def reducer(self, key, values):
# for value in values:
# assert key == None
# assert value == "{\"value\":10}"
# yield None, "{\"value\":10}"
#
# if __name__ == '__main__':
# RawValueProtocolExample.run()
#
#
# echo '1001\t{"value":10}' | python raw_value_protocol.py
#
#
#
# Creating temp directory /tmp/raw_protocol.yiran.20160828.061913.768951
# Running step 1 of 1...
# reading from STDIN
# Streaming final output from /tmp/raw_protocol.yiran.20160828.061913.768951/output...
#
# {"value":10}
#
# Removing temp directory /tmp/raw_protocol.yiran.20160828.061913.768951...
#
#
#
#
# # json_protocol.py
#
# from mrjob.job import MRJob
# from mrjob.protocol import JSONProtocol
#
# class JSONProtocolExample(MRJob):
#
# INPUT_PROTOCOL = JSONProtocol
# OUTPUT_PROTOCOL = JSONProtocol
# INTERNAL_PROTOCOL = JSONProtocol
#
# def mapper(self, key, value):
# assert key == 1001
# assert value == {"value":10}
# assert isinstance(value, dict)
# yield key, value
# def reducer(self, key, values):
# for value in values:
# assert key == 1001
# assert value == {"value":10}
# yield key, value
#
# if __name__ == '__main__':
# JSONProtocolExample.run()
#
#
# echo '1001\t{"value":10}' | python json_protocol.py
#
#
#
# Creating temp directory /tmp/raw_protocol.yiran.20160828.061913.768951
# Running step 1 of 1...
# reading from STDIN
# Streaming final output from /tmp/raw_protocol.yiran.20160828.061913.768951/output...
#
# 1001 {"value":10}
#
# Removing temp directory /tmp/raw_protocol.yiran.20160828.061913.768951...
#
#
#
#
# # json_value_protocol.py
#
# from mrjob.job import MRJob
# from mrjob.protocol import JSONValueProtocol
#
# class JSONValueProtocolExample(MRJob):
#
# INPUT_PROTOCOL = JSONValueProtocol
# OUTPUT_PROTOCOL = JSONValueProtocol
# INTERNAL_PROTOCOL = JSONValueProtocol
#
# def mapper(self, key, value):
# pass
# def reducer(self, key, values):
# pass
#
# if __name__ == '__main__':
# JSONValueProtocolExample.run()
#
#
# echo '1001\t{"value":10}' | python json_value_protocol.py
#
#
#
# Creating temp directory /tmp/json_value_protocol.yiran.20160914.050922.301542
# Running step 1 of 1...
# reading from STDIN
# Traceback (most recent call last):
# File "json_value_protocol.py", line 17, in
# JSONValueProtocolExample.run()
# File "/home/yiran/anaconda/lib/python2.7/site-packages/mrjob/job.py", line 433, in run
# mr_job.execute()
# File "/home/yiran/anaconda/lib/python2.7/site-packages/mrjob/job.py", line 451, in execute
# super(MRJob, self).execute()
# ...
# key, value = read(line.rstrip(b'\r\n'))
# File "/home/yiran/anaconda/lib/python2.7/site-packages/mrjob/protocol.py", line 222, in read
# return (None, ujson.loads(line))
# ValueError: Trailing data
#
#
#
#