2017-09-21 12 views
1

HadoopでJsonファイルを処理するためにPythonコードを使用してMapperを書き込む方法。 Iコードの下にしようとした:シェルコマンドcat user_info.json | python mapper.pyを使用して、上記のコードの実行に関するjsonファイル用のストリーミングmapreduceジョブをPythonで書く方法は?

import json 
import sys 
data = json.loads(sys.stdin) 

、それが表示されているエラー:

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

json.loads()関数はJSONを表す文字列を期待資料;しかし、あなたはFile objectを渡しています。 たとえば、ファイルが1行に1つのJSONドキュメントである場合は、標準入力を1行ずつ繰り返して、各行を解析し、各行を解析できます。

import json 
import sys 

for line in sys.stdin: 
    print json.loads(line.strip()) 
関連する問題