This is an automated email from the ASF dual-hosted git repository. michaelsmith pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/impala.git
commit d91cdb0cec6eb024a006c42649b2f864745e8c86 Author: Michael Smith <[email protected]> AuthorDate: Wed Apr 19 11:56:16 2023 -0700 IMPALA-12077: Remove deprecated Avro methods Switches Avro methods deprecated in Avro 1.8 to new alternatives. Change-Id: I8c01886774eb4ca5964a82c2fa568d7c4354c70c Reviewed-on: http://gerrit.cloudera.org:8080/19772 Reviewed-by: Impala Public Jenkins <[email protected]> Tested-by: Impala Public Jenkins <[email protected]> --- .../java/org/apache/impala/util/AvroSchemaConverter.java | 12 +++--------- .../java/org/apache/impala/util/AvroSchemaParser.java | 16 ++++++++-------- .../apache/impala/infra/tableflattener/FileMigrator.java | 2 +- .../impala/infra/tableflattener/SchemaFlattener.java | 2 +- .../apache/impala/infra/tableflattener/SchemaUtil.java | 6 ++---- 5 files changed, 15 insertions(+), 23 deletions(-) diff --git a/fe/src/main/java/org/apache/impala/util/AvroSchemaConverter.java b/fe/src/main/java/org/apache/impala/util/AvroSchemaConverter.java index 31022260b..efe62d366 100644 --- a/fe/src/main/java/org/apache/impala/util/AvroSchemaConverter.java +++ b/fe/src/main/java/org/apache/impala/util/AvroSchemaConverter.java @@ -21,9 +21,6 @@ import java.util.List; import org.apache.avro.Schema; import org.apache.hadoop.hive.metastore.api.FieldSchema; -import org.codehaus.jackson.JsonNode; -import org.codehaus.jackson.node.IntNode; -import org.codehaus.jackson.node.JsonNodeFactory; import org.apache.impala.analysis.ColumnDef; import org.apache.impala.catalog.ArrayType; @@ -105,7 +102,6 @@ public class AvroSchemaConverter { private Schema convertFieldSchemasImpl( List<FieldSchema> fieldSchemas, String schemaName) { List<Schema.Field> avroFields = Lists.newArrayList(); - JsonNode nullDefault = JsonNodeFactory.instance.nullNode(); for (FieldSchema fs: fieldSchemas) { Type impalaType = Type.parseColumnType(fs.getType()); if (impalaType == null) { @@ -113,7 +109,7 @@ public class AvroSchemaConverter { fs.getType() + " is not a suppported Impala type"); } final Schema.Field avroField = new Schema.Field(fs.getName(), - createAvroSchema(impalaType), fs.getComment(), nullDefault); + createAvroSchema(impalaType), fs.getComment(), Schema.NULL_VALUE); avroFields.add(avroField); } return createAvroRecord(avroFields, schemaName); @@ -178,10 +174,8 @@ public class AvroSchemaConverter { Schema decimalSchema = Schema.create(Schema.Type.BYTES); decimalSchema.addProp(AVRO_LOGICAL_TYPE, AVRO_DECIMAL_TYPE); // precision and scale must be integer values - decimalSchema.addProp(PRECISION_PROP_NAME, - new IntNode(impalaDecimalType.decimalPrecision())); - decimalSchema.addProp(SCALE_PROP_NAME, - new IntNode(impalaDecimalType.decimalScale())); + decimalSchema.addProp(PRECISION_PROP_NAME, impalaDecimalType.decimalPrecision()); + decimalSchema.addProp(SCALE_PROP_NAME, impalaDecimalType.decimalScale()); return decimalSchema; } diff --git a/fe/src/main/java/org/apache/impala/util/AvroSchemaParser.java b/fe/src/main/java/org/apache/impala/util/AvroSchemaParser.java index a214664f7..c661c732f 100644 --- a/fe/src/main/java/org/apache/impala/util/AvroSchemaParser.java +++ b/fe/src/main/java/org/apache/impala/util/AvroSchemaParser.java @@ -44,7 +44,6 @@ import org.apache.impala.catalog.StructField; import org.apache.impala.catalog.StructType; import org.apache.impala.catalog.Type; import org.apache.impala.common.AnalysisException; -import org.codehaus.jackson.JsonNode; /** * Utility class used to parse Avro schema. Checks that the schema is valid @@ -201,15 +200,16 @@ public class AvroSchemaParser { * Throws a SchemaParseException if the property doesn't parse to a * natural number. */ - private static Integer getDecimalProp(Schema schema, String propName) - throws SchemaParseException { - JsonNode node = schema.getJsonProp(propName); + private static Integer getDecimalProp(Schema schema, String propName) { + Object node = schema.getObjectProp(propName); if (node == null) return null; - int propValue = node.getValueAsInt(-1); - if (propValue < 0) { + Integer value = -1; + if (node instanceof Integer) value = (Integer) node; + if (node instanceof Double) value = ((Double) node).intValue(); + if (value < 0) { throw new SchemaParseException(String.format("Invalid decimal '%s' " + - "property value: %s", propName, node.getValueAsText())); + "property value: %s", propName, node)); } - return propValue; + return value; } } diff --git a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/FileMigrator.java b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/FileMigrator.java index 88d52fba3..9ca9ecbbc 100644 --- a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/FileMigrator.java +++ b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/FileMigrator.java @@ -70,7 +70,7 @@ public class FileMigrator { if (SchemaUtil.recordHasField(srcRecord, field.name())) { value = srcRecord.get(field.name()); } else { - Preconditions.checkNotNull(field.defaultValue()); + Preconditions.checkNotNull(field.defaultVal()); value = GenericData.get().getDefaultValue(field); } writeValue(value, field.schema(), field.name(), dstRecord, dstDataset, diff --git a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java index cc1897762..535626de1 100644 --- a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java +++ b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaFlattener.java @@ -62,7 +62,7 @@ public class SchemaFlattener { Schema fieldSchema = field.schema(); if (SchemaUtil.isSimpleType(fieldSchema)) { dstSchemaFields.add(SchemaUtil.createField(fieldNamePrefix + field.name(), - fieldSchema, field.doc(), field.defaultValue())); + fieldSchema, field.doc(), field.defaultVal())); continue; } if (SchemaUtil.isNullable(fieldSchema)) { diff --git a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaUtil.java b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaUtil.java index c46393d4f..2699242f5 100644 --- a/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaUtil.java +++ b/java/TableFlattener/src/main/java/org/apache/impala/infra/tableflattener/SchemaUtil.java @@ -24,7 +24,6 @@ import org.apache.avro.Schema; import org.apache.avro.Schema.Field; import org.apache.avro.Schema.Type; import org.apache.avro.generic.GenericRecord; -import org.codehaus.jackson.JsonNode; import java.util.Map; @@ -43,7 +42,7 @@ public class SchemaUtil { return createField(name, type, null, null); } - static Field createField(String name, Type type, String doc, JsonNode defaultValue) { + static Field createField(String name, Type type, String doc, Object defaultValue) { return new Field(name, Schema.createUnion( Schema.create(Type.NULL), Schema.create(type)), doc, defaultValue); } @@ -52,8 +51,7 @@ public class SchemaUtil { return createField(name, schema, null, null); } - static Field createField(String name, Schema schema, String doc, - JsonNode defaultValue) { + static Field createField(String name, Schema schema, String doc, Object defaultValue) { Preconditions.checkState(!schemaHasNesting(schema)); if (schema.getType() == Type.UNION) { return new Field(name, Schema.createUnion(schema.getTypes()), doc, defaultValue);
