Python 2.7 如何在python中为json文件编写流式mapreduce作业?

Python 2.7 如何在python中为json文件编写流式mapreduce作业?,python-2.7,hadoop-streaming,Python 2.7,Hadoop Streaming,如何在Hadoop中使用python代码编写映射程序来处理Json文件。 我尝试了以下代码: import json import sys data = json.loads(sys.stdin) 使用shell命令cat user_info.json | python mapper.py运行上述代码时,显示错误: Traceback (most recent call last): File "mapper.py", line 6, in <module> data

如何在Hadoop中使用python代码编写映射程序来处理Json文件。 我尝试了以下代码:

import json
import sys
data = json.loads(sys.stdin)
使用shell命令
cat user_info.json | python mapper.py
运行上述代码时,显示错误:

Traceback (most recent call last):
  File "mapper.py", line 6, in <module>
    data = json.loads(sys.stdin)
  File "/usr/lib64/python2.6/json/__init__.py", line 307, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python2.6/json/decoder.py", line 319, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0`enter code here`).end())
TypeError: expected string or buffer
回溯(最近一次呼叫最后一次):
文件“mapper.py”,第6行,在
data=json.loads(sys.stdin)
文件“/usr/lib64/python2.6/json/_init_uuu.py”,第307行,加载
返回\u默认\u解码器。解码
文件“/usr/lib64/python2.6/json/decoder.py”,第319行,在decode中
obj,end=self.raw\u decode(s,idx=\w(s,0`在此处输入代码').end()
TypeError:应为字符串或缓冲区
函数的json.loads()需要一个表示json文档的字符串;然而,你正在通过一个考试。 例如,如果您的文件每行有一个JSON文档,您可以逐行迭代标准输入,然后解析每一行:

import json
import sys

for line in sys.stdin:
    print json.loads(line.strip())