Github user ravipesala commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2283#discussion_r186935553
--- Diff:
store/sdk/src/main/java/org/apache/carbondata/sdk/file/AvroCarbonWriter.java ---
@@ -118,11 +121,131 @@ private Object avroFieldToObject(Schema.Field
avroField, Object fieldValue) {
break;
default:
- throw new UnsupportedOperationException();
+ throw new UnsupportedOperationException(
+ "carbon not support " + type.toString() + " avro type yet");
}
return out;
}
+ /**
+ * converts avro schema to carbon schema required by carbonWriter
+ *
+ * @param avroSchemaString json formatted avro schema as string
+ * @return carbon sdk schema
+ */
+ public static org.apache.carbondata.sdk.file.Schema
getCarbonSchemaFromAvroSchema(
+ String avroSchemaString) {
+ if (avroSchemaString == null) {
+ throw new UnsupportedOperationException("avro schema string cannot
be null");
+ }
+ Schema avroSchema = new Schema.Parser().parse(avroSchemaString);
+ Field[] carbonField = new Field[avroSchema.getFields().size()];
+ int i = 0;
+ for (Schema.Field avroField : avroSchema.getFields()) {
+ carbonField[i] = prepareFields(avroField.name(), avroField.schema());
+ i++;
+ }
+ return new org.apache.carbondata.sdk.file.Schema(carbonField);
+ }
+
+ private static Field prepareFields(String FieldName, Schema childSchema)
{
--- End diff --
Just take avro field, no need to take 2 params
---