Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]

Support Questions

Find answers, ask questions, and share your expertise
Announcements
Share your experience with Cloudera on G2 and get a $25 Amazon Gift card.
Hi, I'm CLEO! Something exciting is coming to the Community. Stay Tuned!

Can't redefine org.apache.nifi.dataType - Schema error

avatar
Explorer

Hi Guys,

 

I'm currently having an issue where a schema that I'm using is erroring out in a RecordLookup processor ( with a Rest Service ). The message I get is the one in the title of this post, "Can't redefine org.apache.nifi.dataType". Below you can find the schema that I'm using.

 

 

 

 

 

 

{
  "type": "record",
  "name": "FullTicketData",
  "fields": [
    {
      "name" : "terminal",
      "type": {
        "type": "record",
        "name" : "terminal_array",
        "fields": [
          {
            "name": "success",
            "type": "string"
          },
          {
            "name": "data",
            "type": {
              "type": "array",
              "items": {
                "name": "data_array",
                "type": "record",
                "fields": [
                  {
                    "name": "ID",
                    "type": "int"
                  }
                ]
              }
            }
          },
          {
            "name": "count",
            "type": "int"
          }
        ]
      }
    },
    {
      "name" : "driver",
      "type": {
        "type": "record",
        "name" : "driver",
        "fields": [
          {
            "name": "success",
            "type": "string"
          },
          {
            "name": "data",
            "type": {
              "type": "array",
              "items": {
                "name": "data_record",
                "type": "record",
                "fields": [
                  {
                    "name": "ID",
                    "type": "int"
                  }
                ]
              }
            }
          },
          {
            "name": "count",
            "type": "int"
          }
        ]
      }
    },
    {
      "name": "ticket",
      "type": {
        "name" : "ticket",
        "type" : "record",
        "fields": [
          {
            "name": "success",
            "type": "string"
          },
          {
            "name": "data",
            "type": {
              "name": "data",
              "type": "record",
              "fields": [
                {
                  "name": "ID",
                  "type": "int"
                },
                {
                  "name": "job",
                  "type": {
                    "name": "job",
                    "type": "record",
                    "fields": [
                      {
                        "name": "ID",
                        "type": "int"
                      }
                    ]
                  }
                }
              ]
            }
          }
        ]
      }
    },
    {
      "name": "order",
      "type": {
        "name": "order",
        "type": "record",
        "fields": [
          {
            "name": "externalJobNo",
            "type": "string"
          },
          {
            "name": "jobNo",
            "type": "string"
          },
          {
            "name": "driverName",
            "type": "string"
          },
          {
            "name": "startTime",
            "type": "string"
          },
          {
            "name": "endTime",
            "type": "string"
          },
          {
            "name": "comment",
            "type": "string",
            "default": "empty"
          },
          {
            "name": "readStart",
            "type": "string",
            "default": "0"
          },
          {
            "name": "readEnd",
            "type": "string",
            "default": "0"
          },
          {
            "name": "removed",
            "type": "string"
          },
          {
            "name": "installed",
            "type": "string"
          },
          {
            "name": "endTopCut",
            "type": "string"
          },
          {
            "name": "endBottomCut",
            "type": "string"
          },
          {
            "name": "startTemp",
            "type": "string"
          },
          {
            "name": "endTemp",
            "type": "string"
          },
          {
            "name": "swPer",
            "type": "string"
          },
          {
            "name": "gravity",
            "type": "string"
          },
          {
            "name": "volume",
            "type": "string"
          },
          {
            "name": "grossVolume",
            "type": "string"
          },
          {
            "name": "temp",
            "type": "string"
          },
          {
            "name": "dist",
            "type": "string"
          },
          {
            "name": "explanation",
            "type": "string"
          },
          {
            "name": "status",
            "type": "string"
          },
          {
            "name": "driverID",
            "type": "int"
          },
          {
            "name": "billingQuestionComment",
            "type": "string",
            "default": "empty"
          }
        ]
      }
    },
    {
      "name": "jobTimeType",
      "type": {
        "name": "jobTimeType",
        "type": "record",
        "fields": [
          {
            "name": "startTime",
            "type": "string"
          },
          {
            "name": "endTime",
            "type": "string"
          },
          {
            "name": "startlatitude",
            "type": "string"
          },
          {
            "name": "startlongitude",
            "type": "string"
          },
          {
            "name": "endlatitude",
            "type": "string"
          },
          {
            "name": "endlongitude",
            "type": "string"
          }
        ]
      }
    },
    {
      "name": "jobTimeTypeTerminal",
      "type": {
        "name": "jobTimeTypeTerminal",
        "type": "record",
        "fields": [
          {
            "name": "terminal",
            "type": "string"
          },
          {
            "name": "startTime",
            "type": "string"
          },
          {
            "name": "endTime",
            "type": "string"
          },
          {
            "name": "startlatitude",
            "type": "string"
          },
          {
            "name": "startlongitude",
            "type": "string"
          },
          {
            "name": "endlatitude",
            "type": "string"
          },
          {
            "name": "endlongitude",
            "type": "string"
          }
        ]
      }
    }
  ]
}

 

 

 

 

 

 

And the data, that it maps. BTW, this is just an example data.

 

 

 

 

 

 

{
    "terminal": {
        "success": "string",
        "data": [
            {
                "ID": 0
            }
        ],
        "count": 0
    },
    "driver": {
        "success": "string",
        "data": [
            {
                "ID": 0
            }
        ],
        "count": 0
    },
    "ticket": {
        "success": "string",
        "data": {
            "ID": 0,
            "job": {
                "ID": 0
            }
        }
    },
    "order": {
        "externalJobNo": "string",
        "jobNo": "string",
        "driverName": "string",
        "startTime": "string",
        "endTime": "string",
        "comment": "string",
        "readStart": "string",
        "readEnd": "string",
        "removed": "string",
        "installed": "string",
        "endTopCut": "string",
        "endBottomCut": "string",
        "startTemp": "string",
        "endTemp": "string",
        "swPer": "string",
        "gravity": "string",
        "volume": "string",
        "grossVolume": "string",
        "temp": "string",
        "dist": "string",
        "explanation": "string",
        "status": "string",
        "driverID": 0,
        "billingQuestionComment": "string"
    },
    "jobTimeType": {
        "startTime": "string",
        "endTime": "string",
        "startlatitude": "string",
        "startlongitude": "string",
        "endlatitude": "string",
        "endlongitude": "string"
    },
    "jobTimeTypeTerminal": {
        "terminal": "string",
        "startTime": "string",
        "endTime": "string",
        "startlatitude": "string",
        "startlongitude": "string",
        "endlatitude": "string",
        "endlongitude": "string"
    }
}

 

 

 

So, for testing, I tried to use the GenerateFlowFile processor, with the exact sample data above, and a ConvertRecord processor set to Infer Schema, to make NiFi generate the schema so I can spot any errors, but when I do that, I get the same error message. 

 

The last piece of information I have is that this error started when I added the "terminal" and the "driver" JSON attributes. Without it, everything seems to work correctly. 

 

hjfigueira_0-1644431476877.png

 

5 REPLIES 5

avatar
Super Guru

@hjfigueira ,

 

I ran a test with your schema and data and it worked without problems for me.

I think there's something else in your environment that hasn't been described here that's contributing to the problem.

 

André

 

--
Was your question answered? Please take some time to click on "Accept as Solution" below this post.
If you find a reply useful, say thanks by clicking on the thumbs up button.

avatar
Explorer

Thank you very much @araujo.

 

Finally, I manage to solve that, I'm just unsure about the true cause tho. What I did was, on the service that writes the JSON, in the "Schema Access Strategy" instead of using "Inherit Schema" I used the "Schema Text" property, and used that same schema. ( I already had it into the reader ).

 

I suspect that somehow, the schemas that NiFi was generating, contained duplicated data, but I have no hard evidence on that so, it's just speculation. 

avatar
Super Guru

Which version of NiFi are you using?

--
Was your question answered? Please take some time to click on "Accept as Solution" below this post.
If you find a reply useful, say thanks by clicking on the thumbs up button.

avatar
Explorer

1.13.2

hjfigueira_0-1644593352258.png

 

avatar
Super Guru

Thanks!

--
Was your question answered? Please take some time to click on "Accept as Solution" below this post.
If you find a reply useful, say thanks by clicking on the thumbs up button.