Wow!

My apologies for the really bad response I gave linking to the same
article you mentioned.  I should be more careful when
reading/responding on the phone!

Thanks
On Thu, Aug 30, 2018 at 11:01 AM Matt Burgess <[email protected]> wrote:
>
> V,
>
> Currently NiFi does not support specifying a schema in JSONSchema
> format, you'll want to convert that to an Avro schema for use in
> JsonTreeReader. I don't know JSONSchema that well so I'm not sure if
> that "stats" schema is supposed to be included in the outgoing object.
> I ran it through a utility-under-development [1] and got the following
> Avro schema out:
>
> {"type":"record","name":"record0","fields":[{"name":"create_date","type":"long"},{"name":"id","type":"string"}]}
>
> This doesn't add the "stats" record and specifies "create_date" as a
> long versus a BigInteger. I think you might want to use an Avro
> logical type of "decimal" [2] depending on what the value is in the
> actual JSON object:
>
> {"type":"record","name":"record0","fields":[
>   {"name":"create_date","type": {"type": "bytes","logicalType":
> "decimal","precision": 12,"scale": 0}},
>   {"name":"id","type":"string"}
> ]}
>
> If you have a stats object present, this might work:
>
> {"type":"record","name":"record0","fields":[
>   {"name": "stats", "type" :
> {"type":"record","name":"statsRecord","fields":[{"name":"id","type":"string"},{"name":"bin_qualifier","type":"string"}]}},
>   {"name":"create_date","type": {"type": "bytes","logicalType":
> "decimal","precision": 12,"scale": 0}},
>   {"name":"id","type":"string"}
> ]}
>
> I didn't validate or try these so there may be typos or other
> (hopefully minor) mistakes.
>
> Regards,
> Matt
>
> [1] https://github.com/fge/json-schema-avro
> [2] https://avro.apache.org/docs/1.8.2/spec.html#Decimal
>
> On Thu, Aug 30, 2018 at 9:54 AM l vic <[email protected]> wrote:
> >
> > I have json file for the schema that looks like the following:
> >
> > {
> >     "$schema": "http://json-schema.org/draft-04/schema#";,
> >     "definitions": {
> >         "stats": {
> >             "type": "object",
> >             "additionalProperties": false,
> >             "properties": {
> >                 "id": {
> >                     "type": "string"
> >                 },
> >                 "bin_qualifier": {
> >                     "type": "string"
> >                 }
> >             }
> >         }
> >     },
> >     "additionalProperties": false,
> >     "description": "attributes",
> >     "type": "object",
> >     "properties": {
> >         "id": {
> >             "type": "string",
> >             "required": true,
> >         },
> >         "create_date": {
> >             "type": "integer",
> >             "javaType": "java.math.BigInteger",
> >             "required": true
> >         }
> >     }
> > }
> >
> >
> > How can I add this schema for JsonTreeReader?
> >
> > On Thu, Aug 30, 2018 at 9:02 AM Otto Fowler <[email protected]> wrote:
> >>
> >> The record readers are services, that processors use.
> >> When you use a *Record* processor, you will have to select a Reader and a 
> >> Writer Service, or create one ( which you can do through the UI ).
> >> https://blogs.apache.org/nifi/entry/record-oriented-data-with-nifi
> >>
> >>
> >> On August 30, 2018 at 08:48:08, l vic ([email protected]) wrote:
> >>
> >> So, where's JsonTreeReader? I am on nifi-1.7.1-RC1 and i don't see it in 
> >> the list of available processors...
> >> Thanks,
> >> V
> >>
> >> On Thu, Aug 30, 2018 at 5:31 AM Sivaprasanna <[email protected]> 
> >> wrote:
> >>>
> >>> Hi. Just like CSVRecordReader, we have record reader service for JSON. 
> >>> It's called JsonTreeReader. You can use AvroSchemaRegistry and provide an 
> >>> Avro schema (usually generated through InferAvroSchema processor) for 
> >>> your JSON. Refer: 
> >>> https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-record-serialization-services-nar/1.7.1/org.apache.nifi.json.JsonTreeReader/index.html
> >>>
> >>> -
> >>> Sivaprasanna
> >>>
> >>> On Thu, 30 Aug 2018 at 2:21 PM, l vic <[email protected]> wrote:
> >>>>
> >>>> I need to save two different json messages according to json schemas 
> >>>> available for each to different relational database tables.
> >>>> I saw this blog:
> >>>> https://blogs.apache.org/nifi/entry/record-oriented-data-with-nifi
> >>>> with example using CSVRecordReader for csv->json transformation.
> >>>> but what would be RecordReader for schema-based transformation from 
> >>>> json? Is this a valid approach, or what would be best approach to solve 
> >>>> this problem?
> >>>> I am using: nifi-1.7.1-RC1...
> >>>> Thank you,

Reply via email to