diff --git a/src/main/java/org/apache/datasketches/hive/frequencies/GetFrequentItemsFromStringsSketchUDTF.java b/src/main/java/org/apache/datasketches/hive/frequencies/GetFrequentItemsFromStringsSketchUDTF.java
index 218bf74..9ecd3bb 100644
--- a/src/main/java/org/apache/datasketches/hive/frequencies/GetFrequentItemsFromStringsSketchUDTF.java
+++ b/src/main/java/org/apache/datasketches/hive/frequencies/GetFrequentItemsFromStringsSketchUDTF.java
@@ -59,7 +59,8 @@
           + inspectors[0].getCategory().name() + " was recieved");
     }
     this.inputObjectInspector = (PrimitiveObjectInspector) inspectors[0];
-    if (this.inputObjectInspector.getPrimitiveCategory() != PrimitiveObjectInspector.PrimitiveCategory.BINARY) {
+    if (this.inputObjectInspector.getPrimitiveCategory() 
+        != PrimitiveObjectInspector.PrimitiveCategory.BINARY) {
       throw new UDFArgumentTypeException(0, "Binary value expected as the first argument, but "
           + this.inputObjectInspector.getPrimitiveCategory().name() + " was recieved");
     }
diff --git a/src/main/java/org/apache/datasketches/hive/hll/DataToSketchUDAF.java b/src/main/java/org/apache/datasketches/hive/hll/DataToSketchUDAF.java
index e952eb1..7a0f460 100644
--- a/src/main/java/org/apache/datasketches/hive/hll/DataToSketchUDAF.java
+++ b/src/main/java/org/apache/datasketches/hive/hll/DataToSketchUDAF.java
@@ -202,7 +202,8 @@
       }
       TgtHllType type = DEFAULT_HLL_TYPE;
       if (this.hllTypeInspector_ != null) {
-        type = TgtHllType.valueOf(PrimitiveObjectInspectorUtils.getString(parameters[2], this.hllTypeInspector_));
+        type = 
+          TgtHllType.valueOf(PrimitiveObjectInspectorUtils.getString(parameters[2], this.hllTypeInspector_));
       }
       state.init(lgK, type);
     }
diff --git a/src/main/java/org/apache/datasketches/hive/hll/UnionSketchUDAF.java b/src/main/java/org/apache/datasketches/hive/hll/UnionSketchUDAF.java
index ac96c9f..38bb9b9 100644
--- a/src/main/java/org/apache/datasketches/hive/hll/UnionSketchUDAF.java
+++ b/src/main/java/org/apache/datasketches/hive/hll/UnionSketchUDAF.java
@@ -185,7 +185,8 @@
       }
       TgtHllType type = DEFAULT_HLL_TYPE;
       if (this.hllTypeInspector_ != null) {
-        type = TgtHllType.valueOf(PrimitiveObjectInspectorUtils.getString(parameters[2], this.hllTypeInspector_));
+        type = 
+          TgtHllType.valueOf(PrimitiveObjectInspectorUtils.getString(parameters[2], this.hllTypeInspector_));
       }
       state.init(lgK, type);
     }
diff --git a/src/main/java/org/apache/datasketches/hive/theta/EstimateSketchSimilarityUDF.java b/src/main/java/org/apache/datasketches/hive/theta/EstimateSketchSimilarityUDF.java
index 39a5982..35a1802 100644
--- a/src/main/java/org/apache/datasketches/hive/theta/EstimateSketchSimilarityUDF.java
+++ b/src/main/java/org/apache/datasketches/hive/theta/EstimateSketchSimilarityUDF.java
@@ -19,14 +19,14 @@
 
 package org.apache.datasketches.hive.theta;
 
+import static org.apache.datasketches.Util.DEFAULT_UPDATE_SEED;
+
 import org.apache.datasketches.hive.common.BytesWritableHelper;
 import org.apache.datasketches.theta.JaccardSimilarity;
 import org.apache.datasketches.theta.Sketch;
 import org.apache.hadoop.hive.ql.exec.UDF;
 import org.apache.hadoop.io.BytesWritable;
 
-import static org.apache.datasketches.Util.DEFAULT_UPDATE_SEED;
-
 /**
  * Hive estimate sketch similarity UDF.
  *
@@ -53,7 +53,7 @@
       secondSketch = Sketch.wrap(BytesWritableHelper.wrapAsMemory(secondSketchBytes), DEFAULT_UPDATE_SEED);
     }
 
-    double[] jaccard = JaccardSimilarity.jaccard(firstSketch, secondSketch);
+    final double[] jaccard = JaccardSimilarity.jaccard(firstSketch, secondSketch);
     return jaccard[1];
   }
 }
diff --git a/src/main/java/org/apache/datasketches/hive/theta/UnionSketchUDAF.java b/src/main/java/org/apache/datasketches/hive/theta/UnionSketchUDAF.java
index 893d857..a134fa8 100644
--- a/src/main/java/org/apache/datasketches/hive/theta/UnionSketchUDAF.java
+++ b/src/main/java/org/apache/datasketches/hive/theta/UnionSketchUDAF.java
@@ -160,7 +160,8 @@
       if (!state.isInitialized()) {
         initializeState(state, parameters);
       }
-      final byte[] serializedSketch = (byte[]) this.inputObjectInspector.getPrimitiveJavaObject(parameters[0]);
+      final byte[] serializedSketch = 
+          (byte[]) this.inputObjectInspector.getPrimitiveJavaObject(parameters[0]);
       if (serializedSketch == null) { return; }
       state.update(Memory.wrap(serializedSketch));
     }
@@ -168,7 +169,8 @@
     private void initializeState(final UnionState state, final Object[] parameters) {
       int nominalEntries = DEFAULT_NOMINAL_ENTRIES;
       if (this.nominalEntriesObjectInspector != null) {
-        nominalEntries = PrimitiveObjectInspectorUtils.getInt(parameters[1], this.nominalEntriesObjectInspector);
+        nominalEntries = 
+            PrimitiveObjectInspectorUtils.getInt(parameters[1], this.nominalEntriesObjectInspector);
       }
       long seed = DEFAULT_UPDATE_SEED;
       if (this.seedObjectInspector != null) {
diff --git a/src/main/java/org/apache/datasketches/hive/tuple/ArrayOfDoublesSketchToValuesUDTF.java b/src/main/java/org/apache/datasketches/hive/tuple/ArrayOfDoublesSketchToValuesUDTF.java
index 0f2ee8d..add69b6 100644
--- a/src/main/java/org/apache/datasketches/hive/tuple/ArrayOfDoublesSketchToValuesUDTF.java
+++ b/src/main/java/org/apache/datasketches/hive/tuple/ArrayOfDoublesSketchToValuesUDTF.java
@@ -54,7 +54,8 @@
           + inspectors[0].getCategory().name() + " was recieved");
     }
     this.inputObjectInspector = (PrimitiveObjectInspector) inspectors[0];
-    if (this.inputObjectInspector.getPrimitiveCategory() != PrimitiveObjectInspector.PrimitiveCategory.BINARY) {
+    if (this.inputObjectInspector.getPrimitiveCategory() 
+        != PrimitiveObjectInspector.PrimitiveCategory.BINARY) {
       throw new UDFArgumentTypeException(0, "Binary value expected as the first argument, but "
           + this.inputObjectInspector.getPrimitiveCategory().name() + " was recieved");
     }
diff --git a/src/main/java/org/apache/datasketches/hive/tuple/SketchState.java b/src/main/java/org/apache/datasketches/hive/tuple/SketchState.java
index ccc7093..2c2adf2 100644
--- a/src/main/java/org/apache/datasketches/hive/tuple/SketchState.java
+++ b/src/main/java/org/apache/datasketches/hive/tuple/SketchState.java
@@ -45,7 +45,8 @@
   void update(final Object data, final PrimitiveObjectInspector keyObjectInspector, final U value) {
     switch (keyObjectInspector.getPrimitiveCategory()) {
     case BINARY:
-      this.sketch_.update(PrimitiveObjectInspectorUtils.getBinary(data, keyObjectInspector).copyBytes(), value);
+      this.sketch_.update(
+          PrimitiveObjectInspectorUtils.getBinary(data, keyObjectInspector).copyBytes(), value);
       return;
     case BYTE:
       this.sketch_.update(PrimitiveObjectInspectorUtils.getByte(data, keyObjectInspector), value);
diff --git a/tools/SketchesCheckstyle.xml b/tools/SketchesCheckstyle.xml
index 03a69c3..a51083d 100644
--- a/tools/SketchesCheckstyle.xml
+++ b/tools/SketchesCheckstyle.xml
@@ -39,7 +39,7 @@
   <property name="fileExtensions" value="java"/>
 
   <module name="BeforeExecutionExclusionFileFilter">
-    <property name="fileNamePattern" value="src/test/java/.+$"/> 
+    <property name="fileNamePattern" value="src/test/java/.+$"/>
   </module>
 
   <module name="FileTabCharacter">
