2017-12-29 44 views
0

그래서 HDFS에서 멋진 파일을 해독하는 데 몇 가지 문제가 있습니다. hadoop fs -text을 사용하면 파일 압축을 풀고 파일 만 출력 할 수 있습니다. 내가 hadoop fs -copyToLocal을 사용하여 파이썬 이따위로 파일의 압축을 해제하려고하면 그러나 나는Hadoop 스 니펫 파일 암호 해독

snappy.UncompressError: Error while decompressing: invalid input

내 파이썬 프로그램은 매우 간단하고 다음과 같습니다 얻을 :

import snappy 

with open (snappy_file, "r") as input_file: 
    data = input_file.read() 
    uncompressed = snappy.uncompress(data) 
    print uncompressed 

이 나를 위해 비참하게 실패합니다. 그래서 다른 텍스트를 시도, 나는 출력을 hadoop fs -text에서 가져온 후 python-snappy 라이브러리를 사용하여 압축했습니다. 나는 이것을 파일로 출력했다. 그때이 파일을 읽고 압축을 풀 수있었습니다.

AFAIK 스냅 샷은 이전 버전과 호환됩니다. 내 파이썬 코드는 최신 스냅 샷 버전을 사용하고있다. 그리고 나는 hadoop이 오래된 스냅 샷 버전을 사용하고 있다고 생각한다. 이것이 문제가 될 수 있습니까? 아니면 내가 여기에 실종 된 다른 것이 있습니까?

답변

0

잘 알았습니다. 내가 사용하고 있던 것은 rawo 모드가 hadoop의 프레이밍 형식을 사용하여 압축 된 파일을 압축 해제하는 것이 었음을 알 수 있습니다. 0.5.1에서 StreamDecompressor를 시도 했더라도 프레이밍 오류로 인해 실패했습니다. python-snappy 0.5.1은 새로운 형태 인 framing format으로 기본 설정되어 있기 때문에 hadoop 파일을 압축 해제 할 수 없습니다.

마스터 버전 0.5.2가 hadoop 프레이밍 형식에 대한 지원을 추가했음을 알 수 있습니다. 나는이 내장을 수입하면 나는 쉽게 파일을 압축 할 수 있었다 : 이제

with open (snappy_file, "r") as input_file: 
    data = input_file.read() 
    decompressor = snappy.hadoop_snappy.StreamDecompressor() 
    uncompressed = decompressor.decompress(data) 

을 유일한 문제 이것은 핍 버전은 아직 기술적으로, 그래서 내가 기다리거나 그냥 할 것 같아요이다 소스에서 빌드를 사용하십시오.