You mean empty string as the key in the object, right? Empty string should
be allowed just as a special string. JSON string allows empty string as the
key.

However I do notice that some tools  such as parquet tools using avro may
not support empty string keys.
insert into tab0 select parse_json(column1) from values('{"": 1}');
> parquet cat test.parquet
org.apache.avro.SchemaParseException: Empty name
at org.apache.avro.Schema.validateName(Schema.java:1618)
at org.apache.avro.Schema.access$400(Schema.java:94)
at org.apache.avro.Schema$Name.<init>(Schema.java:713)
at org.apache.avro.Schema.createRecord(Schema.java:221)
at
org.apache.avro.SchemaBuilder$RecordBuilder.fields(SchemaBuilder.java:1807)
at
org.apache.parquet.avro.AvroSchemaConverter.convertFields(AvroSchemaConverter.java:301)
at
org.apache.parquet.avro.AvroSchemaConverter.convertField(AvroSchemaConverter.java:473)
at
org.apache.parquet.avro.AvroSchemaConverter.convertFields(AvroSchemaConverter.java:303)
at
org.apache.parquet.avro.AvroSchemaConverter.convertField(AvroSchemaConverter.java:473)
at
org.apache.parquet.avro.AvroSchemaConverter.convertFields(AvroSchemaConverter.java:303)
at
org.apache.parquet.avro.AvroSchemaConverter.convertField(AvroSchemaConverter.java:473)
at
org.apache.parquet.avro.AvroSchemaConverter.convertFields(AvroSchemaConverter.java:303)
at
org.apache.parquet.avro.AvroSchemaConverter.convert(AvroSchemaConverter.java:292)
at org.apache.parquet.cli.util.Schemas.fromParquet(Schemas.java:85)
at org.apache.parquet.cli.BaseCommand.getAvroSchema(BaseCommand.java:396)

On Fri, May 23, 2025 at 2:57 PM wish maple <[email protected]> wrote:

> I didn't find the variant encoding spec[1] disallow empty keys, however,
> [2] might require a shredded key with naming. So I wonder whether empty
> keys are allowed?
>
> Best,
> Xuwei Fu
>
> [1]
> https://github.com/apache/parquet-format/blob/master/VariantEncoding.md
> [2]
>
> https://github.com/apache/parquet-format/blob/master/VariantShredding.md#objects
>

Reply via email to