usql icon indicating copy to clipboard operation
usql copied to clipboard

Converting Avro file to JSONs using JsonOutputer

Open lalithakiran opened this issue 6 years ago • 3 comments

I have a requirement where I need to extract JSON files from Avro by using U-SQL. Avro files contain a collection of JSON and need to extract individual JSON from Avro. Here I have written code. I used JsonOuptter() for writing jsons.

OUTPUT @source
TO "C://schemaType.json"
USING new JsonOutputter();

I am getting JSON as like below.

[
  {
    "type": "C",
    "cnn": "1",
    "source": "{\r\n  \"vendorCd\": \"G\",\r\n  \"brandCd\": \"4\",\r\n  \"channelCd\": \"C\",\r\n  \"accessTypeCd\": \"I\"\r\n}",
    
  },
  {
    "type": "C",
    "cnn": "9",
    "source": "{\r\n  \"vendorCd\": \"G\",\r\n  \"brandCd\": \"4\",\r\n  \"channelCd\": \"C\",\r\n  \"accessTypeCd\": \"I\"\r\n}",
   
  }
]

I am expecting jSON as like below.

[
{  
   "type":"C",
   "ccn":"1",
   "source":{  
      "vendorCd":"G",
      "brandCd":"4",
      "channelCd":"C",
      "accessTypeCd":"I"
   },
{  
   "type":"C",
   "ccn":"9",
   "source":{  
      "vendorCd":"G",
      "brandCd":"4",
      "channelCd":"C",
      "accessTypeCd":"I"
   }
]

Thanks for your help and support.

lalithakiran avatar May 29 '18 14:05 lalithakiran

This is as expected.

Your column source is of type string so it outputs it as a string property. You have the following options (both involving most likely to extend the outputter:

  1. Add an option to indicate a column to be treated as JSON instead of a string.
  2. Keep the data in the column as a SqlMap<string,string> and then output it as a set of properties for the object.

Both most likely need changes to the outputter.

Best regards Michael

MikeRys avatar May 29 '18 18:05 MikeRys

Would you please help me more on this. Where can I get the option to indicate column as JSON?

lalithakiran avatar May 30 '18 01:05 lalithakiran

You would have to write your own version of the outputter to add this option. Please note that these are samples that are meant to help people get started and if something is missing to contribute to it :).

MikeRys avatar May 31 '18 01:05 MikeRys