Example usage for org.apache.hadoop.fs MD5MD5CRC32FileChecksum getAlgorithmName

List of usage examples for org.apache.hadoop.fs MD5MD5CRC32FileChecksum getAlgorithmName

Introduction

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

Prototype

@Override
    public String getAlgorithmName() 

Source Link

Usage

From source file:com.bigstep.datalake.JsonUtil.java

License:Apache License

/** Convert a MD5MD5CRC32FileChecksum to a Json string. */
public static String toJsonString(final MD5MD5CRC32FileChecksum checksum) {
    if (checksum == null) {
        return null;
    }/*from   w  w  w  .  j av a 2s .c  o  m*/

    final Map<String, Object> m = new TreeMap<String, Object>();
    m.put("algorithm", checksum.getAlgorithmName());
    m.put("length", checksum.getLength());
    m.put("bytes", StringUtils.byteToHexString(checksum.getBytes()));
    return toJsonString(FileChecksum.class, m);
}

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  ww  w.ja v a2  s  .c  o  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;
}