usql
usql copied to clipboard
Converting Avro file to JSONs using JsonOutputer
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.
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:
- Add an option to indicate a column to be treated as JSON instead of a string.
- 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
Would you please help me more on this. Where can I get the option to indicate column as JSON?
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 :).