commonlib/src/main/java/com/streamsets/pipeline/lib/util/AvroTypeUtil.java
public static BigDecimal bigDecimalFromBytes(byte[] decimalBytes, int scale) {
    final BigInteger bigInt = new BigInteger(decimalBytes);
    return new BigDecimal(bigInt, scale);
  }
public static BigDecimal bigDecimalFromBytes(byte[] decimalBytes, int scale) {
    final BigInteger bigInt = new BigInteger(decimalBytes);
    return new BigDecimal(bigInt, scale);
  }
Returns a {@link BigDecimal} from the given bytes and scale.  The bytes must adhere to the format that Avro
stores decimals in.
<br>
Avro stores decimal values as two's complement, big-endian for the integral portion, then the decimal place
separately (via the scale).

@see <a href="https://avro.apache.org/docs/1.8.1/spec.html#Decimal">Avro documentation</a>

@param decimalBytes the bytes of the decimal value's integral value, assumed to be two's complement, big-endian
@param scale the scale of the decimal value
@return a {@link BigDecimal} constructed from the decimalBytes and scale