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

时间:2017-09-21 10:06:04

标签: python-2.7 hadoop-streaming

如何使用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

1 个答案:

答案 0 :(得分:1)

json.loads()函数需要一个表示JSON文档的字符串;但是,你传递的是File object。 例如,如果您的文件是每行一个JSON文档,则可以逐行迭代标准输入,然后解析每一行:

import json
import sys

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