如何使用python代码编写Mapper来处理Hadoop中的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
答案 0 :(得分:1)
json.loads()函数需要一个表示JSON文档的字符串;但是,你传递的是File object。 例如,如果您的文件是每行一个JSON文档,则可以逐行迭代标准输入,然后解析每一行:
import json
import sys
for line in sys.stdin:
print json.loads(line.strip())