Hadoop 기반 데이터 압축 및 압축 해제 인스턴스
3599 단어 Hadoop
테스트에 대한 입력 데이터(/input/kmeans/sample.txt)는 다음과 같습니다.
1,1 2,2 3,3 -3,-3 -4,-4 -5,-5
출력 결과 (/output/compress.gz) 는 일련의 압축 문자열입니다
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionOutputStream;
import org.apache.hadoop.util.ReflectionUtils;
import com.panky.tools.Tools;
public class StreamCompressor {
public static void main(String[] args) throws IOException, ClassNotFoundException {
String codecClassname="org.apache.hadoop.io.compress.GzipCodec";
//
Class> codecClass=Class.forName(codecClassname);
Configuration configuration=new Tools().getTools();
FileSystem fileSystem=FileSystem.get(configuration);
InputStream inputStream=fileSystem.open(new Path("/input/kmeans/sample.txt"));
OutputStream outputStream=fileSystem.create(new Path("/output/compress.gz"));
// ReflectionUtil CompressionCodec
CompressionCodec compressionCodec=(CompressionCodec)ReflectionUtils.newInstance(codecClass, configuration);
// CompressionOutputStream System.out ,
CompressionOutputStream compressionOutputStream=compressionCodec.createOutputStream(outputStream);
IOUtils.copyBytes(inputStream, compressionOutputStream, 4096, false);
compressionOutputStream.finish();
}
}
데이터 압축 해제
입력 데이터(/output/compress.gz)는 데이터 압축의 출력 결과입니다.
출력 결과(/output/compress):
1,1 2,2 3,3 -3,-3 -4,-4 -5,-5
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionCodecFactory;
import org.apache.hadoop.io.compress.CompressionInputStream;
import com.panky.tools.Tools;
public class FileDecompressor {
public static void main(String[] args) throws IOException {
// .gz , GzipCodec 。
String uriString="/output/compress.gz";
Configuration configuration=new Tools().getTools();
FileSystem fileSystem=FileSystem.get(configuration);
CompressionCodecFactory factory=new CompressionCodecFactory(configuration);
// getCodec() ,CompressionCodecFactory CompressionCodec 。
CompressionCodec codec=factory.getCodec(new Path(uriString));
if(codec==null){
System.out.println("No codec found for"+uriString);
System.exit(1);
}
// CompressionCodecFactory removeSuffix() codec,
String outString=CompressionCodecFactory.removeSuffix(uriString, codec.getDefaultExtension());
// createInputStream(InputStream in) CompressionInputStream
InputStream inputStream=codec.createInputStream(fileSystem.open(new Path(uriString)));
//
//CompressionInputStream inputStream=codec.createInputStream(fileSystem.open(new Path(uriString)));
OutputStream outputStream=fileSystem.create(new Path(outString));
IOUtils.copyBytes(inputStream, outputStream, configuration);
IOUtils.closeStream(inputStream);
IOUtils.closeStream(outputStream);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Hadoop 클러스터의 JobHistory Server 상세 정보역사 서버를 통해 이미 실행된 Mapreduce 작업 기록을 볼 수 있습니다. 이렇게 하면 우리는 해당 기계의 19888 포트에서 역사 서버의 WEB UI 인터페이스를 열 수 있다.이미 실행된 작업 상황을 볼 수 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.