> On 24.02.2016, at 19:08, Prajwal Tuladhar <[email protected]> wrote:
> 
> Can you paste your avro IDL schema?

See below. The full source is available at https://github.com/tomlurge/converTor

@namespace("converTor.torperf")
protocol torperf_descriptor {

  @aliases(["torperfResult"])
  record Torperf {
    string descriptor_type = "torperf 1.0";
    /** metrics-lib/TorperfResult: String getSource() */
    union { null, string } source;
    /** metrics-lib/TorperfResult: int getFileSize() */
    union { null, int } filesize;
    /** metrics-lib/TorperfResult: long getStartMillis() */
    union { null, long } start;
    /** metrics-lib/TorperfResult: long getSocketMillis() */
    union { null, long } socket;
    /** metrics-lib/TorperfResult: long getConnectMillis() */
    union { null, long } connect;
    /** metrics-lib/TorperfResult: long getNegotiateMillis() */
    union { null, long } negotiate;
    /** metrics-lib/TorperfResult: long getRequestMillis() */
    union { null, long } request;
    /** metrics-lib/TorperfResult: long getResponseMillis() */
    union { null, long } response;
    /** metrics-lib/TorperfResult: long getDataRequestMillis() */
    union { null, long } datarequest;
    /** metrics-lib/TorperfResult: long getDataResponseMillis() */
    union { null, long } dataresponse;
    /** metrics-lib/TorperfResult: long getDataCompleteMillis() */
    union { null, long } datacomplete;
    /** metrics-lib/TorperfResult: int getWriteBytes() */
    union { null, int } writebytes;
    /** metrics-lib/TorperfResult: int getReadBytes() */
    union { null, int } readbytes;
    /** metrics-lib/TorperfResult: Boolean didTimeout() */
    union { null, boolean } didtimeout;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(10) */
    union { null, long } dataperc10;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(20) */
    union { null, long } dataperc20;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(30) */
    union { null, long } dataperc30;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(40) */
    union { null, long } dataperc40;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(50) */
    union { null, long } dataperc50;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(60) */
    union { null, long } dataperc60;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(70) */
    union { null, long } dataperc70;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(80) */
    union { null, long } dataperc80;
    /** metrics-lib/TorperfResult: long SortedMap<Integer, Long> 
getDataPercentiles().get(90) */
    union { null, long } dataperc90;
    /** metrics-lib/TorperfResult: long getLaunchMillis()() */
    union { null, long } launch;
    /** metrics-lib/TorperfResult: long getUsedAtMillis() */
    union { null, long } used_at;
    /** metrics-lib/TorperfResult: List<String> getPath() */
    union { null, array<string> } path;
    /** metrics-lib/TorperfResult: List<Long> getBuildTimes() */
    union { null, array<long> } buildtimes;
    /** metrics-lib/TorperfResult: long getTimeout() */
    union { null, long } timeout;
    /** metrics-lib/TorperfResult: double getQuantile() */
    union { null, double } quantile;
    /** metrics-lib/TorperfResult: int getCircId() */
    union { null, int } circ_id;
    /** metrics-lib/TorperfResult: int getUsedBy() */
    union { null, int } used_by;
   }

}

> On Wed, Feb 24, 2016 at 7:46 AM, tl <[email protected]> wrote:
> Hi again,
> 
> I still haven’t found a solution to this problem. Does this look like some 
> beginners Java mistake (because that may well be…)? Is it okay to ask the 
> same question on stackoverflow or would that count as crossposting/spamming?
> 
> Cheers,
> Thomas
> 
> 
> > On 23.02.2016, at 02:22, tl <[email protected]> wrote:
> >
> > Hi,
> >
> >
> > I want to convert incoming data to Avro and JSON (and later Parquet). Avro 
> > conversion is working okay, but JSON conversion throws the following error 
> > that I don’t understand:
> >
> > Exception in thread "main" java.lang.RuntimeException: Not the Json schema: 
> > {"type":"record","name":"Torperf","namespace":"converTor.torperf","fields":[{"name":"descriptor_type","type":"string","default":"torperf
> >  1.0"},
> > [ … omitted for brevity …]
> > {"name":"circ_id","type":["null","int"],"doc":"metrics-lib/TorperfResult: 
> > int 
> > getCircId()"},{"name":"used_by","type":["null","int"],"doc":"metrics-lib/TorperfResult:
> >  int getUsedBy()"}],"aliases":["torperfResult"]}
> >       at org.apache.avro.data.Json$ObjectWriter.setSchema(Json.java:117)
> >       at converTor.WriterObject.<init>(WriterObject.java:116)
> >       at converTor.TypeWriter.get(TypeWriter.java:31)
> >       at converTor.ConverTor.main(ConverTor.java:249)
> >       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >       at 
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >       at 
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >       at java.lang.reflect.Method.invoke(Method.java:606)
> >       at 
> > com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
> >
> > … but that schema is indeed the schema that I want to use.
> >
> >
> > This is a snippet of my code:
> >
> > File schemaFile = new File("schema/jsonSchema.avsc");
> > Schema.Parser parser = new Schema.Parser();
> > Schema mySchema = parser.parse(schemaFile) ;
> >
> > Json.ObjectWriter jsonDatumWriter = new Json.ObjectWriter();
> > jsonDatumWriter.setSchema(mySchema);
> > OutputStream out = new FileOutputStream(outputFile);
> > Encoder encoder = EncoderFactory.get().jsonEncoder(mySchema, out);
> >
> >
> > Can somebody give me a hint?
> >
> >
> > Thanks,
> > Thomas
> 
> 
> 
> 
> 
> 
> 
> -- 
> --
> Cheers,
> Praj





< he not busy being born is busy dying >





Reply via email to