Github user kumarvishal09 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2454#discussion_r200870442
--- Diff:
core/src/main/java/org/apache/carbondata/core/util/BlockletDataMapUtil.java ---
@@ -321,4 +328,43 @@ private static boolean
isSameColumnSchemaList(List<ColumnSchema> indexFileColumn
}
return updatedValues;
}
+
+ /**
+ * Convert schema to binary
+ */
+ public static byte[] convertSchemaToBinary(List<ColumnSchema>
columnSchemas) throws IOException {
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ DataOutput dataOutput = new DataOutputStream(stream);
+ dataOutput.writeShort(columnSchemas.size());
+ for (ColumnSchema columnSchema : columnSchemas) {
+ if (columnSchema.getColumnReferenceId() == null) {
+
columnSchema.setColumnReferenceId(columnSchema.getColumnUniqueId());
+ }
+ columnSchema.write(dataOutput);
+ }
+ byte[] byteArray = stream.toByteArray();
+ // Compress with snappy to reduce the size of schema
+ return Snappy.rawCompress(byteArray, byteArray.length);
+ }
+
+ /**
+ * Read column schema from binary
+ *
+ * @param schemaArray
+ * @throws IOException
+ */
+ public static List<ColumnSchema> readColumnSchema(byte[] schemaArray)
throws IOException {
+ // uncompress it.
+ schemaArray = Snappy.uncompress(schemaArray);
--- End diff --
Same as abive
---