Python 2.7 如何在python中为json文件编写流式mapreduce作业?
如何在Hadoop中使用python代码编写映射程序来处理Json文件。 我尝试了以下代码: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
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())