2017-12-12 3 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을 사용하여 파일을 열고 unpickle 옵션을 발견했다. 하지만 불행히도 Python 2.7을 사용할 수 없습니다. 비슷한 옵션이 있습니까?

+2

pickle.load는 실제 파이썬 파일 핸들러를 필요로합니다. hdfs.read_file이 반환하는 타입은 확실하지 않지만 pickle.loads (bytes)라는 메소드가 있습니다. –

+0

@BluBb_mADe Perfect. 나는 그것을 지나치게 복잡하게 만든다. – Justin

답변

1

BluBb에 대해 pickle.load에는 Python FileHandler가 필요합니다. hdfs.read_file은이 경우 바이트를 반환하고 pickle.loads을 올바르게 사용하여 모델을 읽습니다.