【问题标题】:Avro Pair Schema In JSON FormatJSON 格式的 Avro 对模式
【发布时间】:2013-09-09 21:27:00
【问题描述】:

我非常熟悉在 Java 中创建 Avro 对模式。例如,

static final String RECORD_STRING = 
     "{\n" + 
     "   \"type\": \"record\",\n" +
     "   \"name\": \"exampleRecord1\",\n" + 
     "   \"fields\": [\n" + 
     "   {\"name\": \"id\", \"type\": \"string\"}\n" +  
     "]\n" + 
     "}";
static{
    final Schema.Parser parser = new Schema.Parser();
    Schema KEY_SCHEMA = parser.parse(RECORD_STRING);
    Schema VALUE_SCHEMA = Schema.create(Schema.Type(STRING)) ;
    Schema PAIR_SCHEMA = Pair.getPairSchema(KEY_SCHEMA, VALUE_SCHEMA);
}

我将如何在不使用任何 Java 的情况下直接将这个 Pair Schema 编写为文件中的 JSON?

【问题讨论】:

    标签: json avro


    【解决方案1】:

    Schema 类有一个 toString() 方法,可以满足您的要求:

    import org.apache.avro.Schema;
    import org.apache.avro.mapred.Pair;
    
    public class Test
    {
        static final Schema PAIR_SCHEMA;
        static final String RECORD_STRING =
                "{\n" +
                "   \"type\": \"record\",\n" +
                "   \"name\": \"exampleRecord1\",\n" +
                "   \"fields\": [\n" +
                "   {\"name\": \"id\", \"type\": \"string\"}\n" +
                "]\n" +
                "}";
    
        static
        {
            final Schema.Parser parser = new Schema.Parser();
            Schema KEY_SCHEMA = parser.parse( RECORD_STRING );
            Schema VALUE_SCHEMA = Schema.create( Schema.Type.STRING );
            PAIR_SCHEMA = Pair.getPairSchema( KEY_SCHEMA, VALUE_SCHEMA );
        }
    
        public static void main( String[] args )
        {
            System.out.println( PAIR_SCHEMA.toString(true) );
        }
    }
    

    这是输出:

    {
      "type" : "record",
      "name" : "Pair",
      "namespace" : "org.apache.avro.mapred",
      "fields" : [ {
        "name" : "key",
        "type" : {
          "type" : "record",
          "name" : "exampleRecord1",
          "namespace" : "",
          "fields" : [ {
            "name" : "id",
            "type" : "string"
          } ]
        },
        "doc" : ""
      }, {
        "name" : "value",
        "type" : "string",
        "doc" : "",
        "order" : "ignore"
      } ]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 2021-07-18
      • 2020-01-17
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多