Example usage for org.apache.hadoop.fs MD5MD5CRC32CastagnoliFileChecksum MD5MD5CRC32CastagnoliFileChecksum

List of usage examples for org.apache.hadoop.fs MD5MD5CRC32CastagnoliFileChecksum MD5MD5CRC32CastagnoliFileChecksum

Introduction

In this page you can find the example usage for org.apache.hadoop.fs MD5MD5CRC32CastagnoliFileChecksum MD5MD5CRC32CastagnoliFileChecksum.

Prototype

public MD5MD5CRC32CastagnoliFileChecksum() 

Source Link

Document

Same as this(0, 0, null)

Usage

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;
    }/* w ww  .  j a  v  a2  s  .c om*/

    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;
}