2017-12-12 18 views
1

現在、Python 3を使用しており、HDFSからピクルファイルをロードしたいと考えています。HDFSのファイルを解凍する

from pywebhdfs.webhdfs import PyWebHdfsClient 
import pickle 

hdfs = PyWebHdfsClient(host='...', user_name='...') 
pickled_model = hdfs.read_file(pickle_path) 
model = pickle.load(pickled_model) 

TypeError: file must have 'read' and 'readline' attributes 

ピクルスローディングステージでタイプエラーが発生します。 pydoopを使用してファイルを開くオプションを見つけて、それをアンピクルしました。しかし残念ながら、私はPython 2.7を使用することはできません。同様のオプションはありますか?

+2

pickle.loadは実際のpythonファイルハンドラを必要とします。 hdfs.read_fileがどのような型を返すのか分かりませんが、pickle.loads(bytes)というメソッドがあります。 –

+0

@BluBb_mADeパーフェクト。私はそれを過度に複雑にしています。 – Justin

答えて

1

BluBbあたり、pickle.loadにはPython FileHandlerが必要です。 hdfs.read_fileはこの場合バイトを返し、pickle.loadsを使用してモデルを正しく読み取ります。

関連する問題