List of usage examples for org.apache.hadoop.fs MD5MD5CRC32GzipFileChecksum MD5MD5CRC32GzipFileChecksum
public MD5MD5CRC32GzipFileChecksum()
From source file:com.bigstep.datalake.JsonUtil.java
License:Apache License
/** Convert a Json map to a MD5MD5CRC32FileChecksum. */ public static MD5MD5CRC32FileChecksum toMD5MD5CRC32FileChecksum(final Map<?, ?> json) throws IOException { if (json == null) { return null; }//from w w w.j a v a 2 s. co m final Map<?, ?> m = (Map<?, ?>) json.get(FileChecksum.class.getSimpleName()); final String algorithm = (String) m.get("algorithm"); final int length = ((Number) m.get("length")).intValue(); final byte[] bytes = StringUtils.hexStringToByte((String) m.get("bytes")); final DataInputStream in = new DataInputStream(new ByteArrayInputStream(bytes)); final DataChecksum.Type crcType = MD5MD5CRC32FileChecksum.getCrcTypeFromAlgorithmName(algorithm); final MD5MD5CRC32FileChecksum checksum; // Recreate what DFSClient would have returned. switch (crcType) { case CRC32: checksum = new MD5MD5CRC32GzipFileChecksum(); break; case CRC32C: checksum = new MD5MD5CRC32CastagnoliFileChecksum(); break; default: throw new IOException("Unknown algorithm: " + algorithm); } checksum.readFields(in); //check algorithm name if (!checksum.getAlgorithmName().equals(algorithm)) { throw new IOException( "Algorithm not matched. Expected " + algorithm + ", Received " + checksum.getAlgorithmName()); } //check length if (length != checksum.getLength()) { throw new IOException( "Length not matched: length=" + length + ", checksum.getLength()=" + checksum.getLength()); } return checksum; }