<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Re: JSON to Avro, Sub-records in Avro in Archives of Support Questions (Read Only)</title>
    <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25898#M5426</link>
    <description>&lt;P&gt;I've got some more trace logs that can probably help out to fix `Cannot convert item: [] to schema`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;25 Mar 2015 20:52:28,328 TRACE [New I/O  worker #1] (org.kitesdk.morphline.base.AbstractCommand.beforeProcess:168)  - beforeProcess: {/record_type[]/alert/action=[allowed], /record_type[]/alert/category=[test2], /record_type[]/alert/severity=[3], /record_type[]/alert/signature=[GeoIP from NL, Netherlands ], /record_type[]/alert/signature_id=[88006], _attachment_body=[{"timestamp":"2015-03-23T07:42:01.303046","event_type":"alert","src_ip":"2.2.2.2","src_port":18192,"dest_ip":"46.231.41.166","dest_port":62004,"proto":"TCP","alert":{"action":"allowed","gid":"1","signature_id":"88006","rev":"1","signature":"GeoIP from NL, Netherlands ","category":"test2","severity":"3"}}], _attachment_mimetype=[json/java+memory], basename=[simple_eve.json], destination_ip=[46.231.41.166], destination_port=[62004], event_type=[alert], protocol=[TCP], source_ip=[2.2.2.2], source_port=[18192], timestamp=[2015-03-23T07:42:01.303046]}

25 Mar 2015 20:52:28,329 DEBUG [New I/O  worker #1] (org.kitesdk.morphline.avro.ToAvroBuilder$ToAvro.doProcess:156)  - Cannot convert item: [] to schema: {"type":"record","name":"Event","fields":[{"name":"timestamp","type":"string"},{"name":"event_type","type":"string"},{"name":"source_ip","type":"string"},{"name":"source_port","type":"int"},{"name":"destination_ip","type":"string"},{"name":"destination_port","type":"int"},{"name":"protocol","type":"string"},{"name":"record_type","type":[{"type":"record","name":"alert","fields":[{"name":"action","type":"string"},{"name":"signature_id","type":"string"},{"name":"signature","type":"string"},{"name":"category","type":"string"},{"name":"severity","type":"string"}]}]}]}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 25 Mar 2015 19:55:45 GMT</pubDate>
    <dc:creator>bas_vdl</dc:creator>
    <dc:date>2015-03-25T19:55:45Z</dc:date>
    <item>
      <title>JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25879#M5421</link>
      <description>&lt;P&gt;I'm trying to convert JSON into Avro using the kite-sdk morphline module. After playing around I'm able to convert the JSON into Avro using a simple schema (no complex data types and no nested structure).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Then I took it one step further and modified the Avro schema as displayed below (subrec.avsc). As you can see the schema consist of a subrecord.&lt;/P&gt;&lt;P&gt;As soon as I tried to convert the JSON to Avro using the morphlines.conf and the subrec.avsc it failed.&lt;/P&gt;&lt;P&gt;Somehow the JSON paths "/record_type[]/alert/action" are not translated by the toAvro function.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The morphlines.conf&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="pln"&gt;morphlines &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;
   &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;   id &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; morphline1
   importCommands &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"org.kitesdk.**"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;   commands &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;
      &lt;SPAN class="com"&gt;# Read the JSON blob&lt;/SPAN&gt;
      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; readJson&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; logError &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; format &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"record: {}"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; args &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"@{}"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

      &lt;SPAN class="com"&gt;# Extract JSON&lt;/SPAN&gt;
      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; extractJsonPaths &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; flatten&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="kwd"&gt;false&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; paths&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
              &lt;SPAN class="str"&gt;"/record_type[]/alert/action"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;/alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;action&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
              &lt;SPAN class="str"&gt;"/record_type[]/alert/signature_id"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;/alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;signature_id&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
              &lt;SPAN class="str"&gt;"/record_type[]/alert/signature"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;/alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;signature&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
              &lt;SPAN class="str"&gt;"/record_type[]/alert/category"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;/alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;category&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
              &lt;SPAN class="str"&gt;"/record_type[]/alert/severity"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;/alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;severity
      &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; logError &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; format &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"EXTRACTED THIS : {}"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; args &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"@{}"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; extractJsonPaths &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; flatten&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="kwd"&gt;false&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; paths&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;              timestamp &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;timestamp&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;              event_type &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;event_type&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;              source_ip &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;src_ip&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;              source_port &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;src_port&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;              destination_ip &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;dest_ip&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;              destination_port &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;dest_port&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;              protocol &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;proto&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

      &lt;SPAN class="com"&gt;# Create Avro according to schema&lt;/SPAN&gt;
      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; logError &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; format &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"WE GO TO AVRO"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; toAvro &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; schemaFile &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;/etc/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;flume&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;conf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;conf&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;empty&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;subrec&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;avsc &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

      &lt;SPAN class="com"&gt;# Create Avro container&lt;/SPAN&gt;
      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; logError &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; format &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"WE GO TO BINARY"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;
      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; writeAvroToByteArray &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; format&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; containerlessBinary &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

      &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; logError &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; format &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"DONE!!!"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;
   &lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;
   &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;And the subrec.avsc&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
  &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"record"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
  &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"Event"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
  &lt;SPAN class="str"&gt;"fields"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"timestamp"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"string"&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"event_type"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"string"&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"source_ip"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"string"&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"source_port"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"int"&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"destination_ip"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"string"&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"destination_port"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"int"&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"protocol"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"string"&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"record_type"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
    &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"null"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
      &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"alert"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"record"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
      &lt;SPAN class="str"&gt;"fields"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"action"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"string"&lt;/SPAN&gt;
        &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"signature_id"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"int"&lt;/SPAN&gt;
        &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"signature"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"string"&lt;/SPAN&gt;
        &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"category"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"string"&lt;/SPAN&gt;
        &lt;SPAN class="pun"&gt;},&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"name"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"severity"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"type"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"int"&lt;/SPAN&gt;
        &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;
      &lt;SPAN class="pun"&gt;]&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;The output on &lt;/SPAN&gt;{ logError { format : "EXTRACTED THIS : {}", args : ["@{}"] } }&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="pun"&gt;[{&lt;/SPAN&gt;
    &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;record_type&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[]/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;action &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;allowed&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;/SPAN&gt; 
    &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;record_type&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[]/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;category &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[],&lt;/SPAN&gt;
    &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;record_type&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[]/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;severity &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;3&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;/SPAN&gt;
    &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;record_type&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[]/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;signature &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GeoIP&lt;/SPAN&gt; &lt;SPAN class="kwd"&gt;from&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="typ"&gt;Netherlands&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;/SPAN&gt;
    &lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;record_type&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[]/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;alert/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;signature_id &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;88006&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    _attachment_body &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[{&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"timestamp"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"2015-03-23T07:42:01.303046"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"event_type"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"alert"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"src_ip"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"1.1.1.1"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"src_port"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="lit"&gt;18192&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"dest_ip"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"46.21.41.16"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"dest_port"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="lit"&gt;62004&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"proto"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"TCP"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
            &lt;SPAN class="str"&gt;"alert"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;
                &lt;SPAN class="str"&gt;"action"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"allowed"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
                &lt;SPAN class="str"&gt;"gid"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"1"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
                &lt;SPAN class="str"&gt;"signature_id"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"88006"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
                &lt;SPAN class="str"&gt;"rev"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"1"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
                &lt;SPAN class="str"&gt;"signature"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"GeoIP from NL, Netherlands"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;
                &lt;SPAN class="str"&gt;"category"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;""&lt;/SPAN&gt;
                &lt;SPAN class="str"&gt;"severity"&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;:&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"3"&lt;/SPAN&gt;
                &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;
            &lt;SPAN class="pun"&gt;}],&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
    _attachment_mimetype&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;json&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;/&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;java &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;+&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; memory&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;],&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    basename &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;[&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;simple_eve&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;.&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;json&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;]&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;}]&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Error&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;java.lang.NoSuchMethodError: org.apache.avro.reflect.ReflectData.getDefaultValue(Lorg/apache/avro/Schema$Field;)Ljava/lang/Object;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also tried the following within ExtractJsonPaths:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="str"&gt;/record_type[]/alert/action&lt;BR /&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class="str"&gt;/record_type/action&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 16 Sep 2022 09:25:23 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25879#M5421</guid>
      <dc:creator>bas_vdl</dc:creator>
      <dc:date>2022-09-16T09:25:23Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25886#M5422</link>
      <description>&amp;gt; java.lang.NoSuchMethodError: org.apache.avro.reflect.ReflectData.getDefaultValue(Lorg/apache/avro/Schema$FieldLjava/lang/Object;&lt;BR /&gt;&lt;BR /&gt;This means you have a wrong avro jar file version on the classpath.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 25 Mar 2015 16:41:40 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25886#M5422</guid>
      <dc:creator>whosch</dc:creator>
      <dc:date>2015-03-25T16:41:40Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25892#M5423</link>
      <description>&lt;P&gt;I have 2 avro jars in my flume lib,&amp;nbsp;avro-1.7.5.jar and&amp;nbsp;avro-1.7.3.jar&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Which one is the correct?&lt;/P&gt;</description>
      <pubDate>Wed, 25 Mar 2015 17:24:06 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25892#M5423</guid>
      <dc:creator>bas_vdl</dc:creator>
      <dc:date>2015-03-25T17:24:06Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25895#M5424</link>
      <description>The more recent version.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 25 Mar 2015 18:05:40 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25895#M5424</guid>
      <dc:creator>whosch</dc:creator>
      <dc:date>2015-03-25T18:05:40Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25896#M5425</link>
      <description>&lt;P&gt;Thanks for your reply. I've removed the older version, restarted the agents. I believe the NoSuchMethod is gone. But still some problem with processing the record.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;10453 [New I/O worker #1] ERROR org.kitesdk.morphline.stdlib.LogErrorBuilder$LogError - EXTRACT&lt;BR /&gt;│ED THIS 2: [{/record_type[]/alert/action=[allowed], /record_type[]&lt;SPAN&gt;/alert&lt;/SPAN&gt;/category=[], /record_type[]&lt;SPAN&gt;/alert&lt;/SPAN&gt;/severity=[3],&lt;BR /&gt;│ /record_type[]&lt;SPAN&gt;/alert&lt;/SPAN&gt;/signature=[GeoIP from NL, Netherlands ], /record_type[]&lt;SPAN&gt;/alert&lt;/SPAN&gt;/signature_id=[88006], _attac&lt;BR /&gt;│hment_body=[{"timestamp":"2015-03-23T07:42:01.303046","event_type":"alert","src_ip":"2.2.2.2","s&lt;BR /&gt;│rc_port":18192,"dest_ip":"46.231.41.166","dest_port":62004,"proto":"TCP","alert":{"action":"allo&lt;BR /&gt;│wed","gid":"1","signature_id":"88006","rev":"1","signature":"GeoIP from NL, Netherlands ","categ&lt;BR /&gt;│ory":"","severity":"3"}}], _attachment_mimetype=[json/java+memory], basename=[simple_eve.json],&lt;BR /&gt;│destination_ip=[46.231.41.166], destination_port=[62004], event_type=[alert], protocol=[TCP], so&lt;BR /&gt;│urce_ip=[2.2.2.2], source_port=[18192], timestamp=[2015-03-23T07:42:01.303046]}]&lt;BR /&gt;│10455 [New I/O worker #1] ERROR org.kitesdk.morphline.stdlib.LogErrorBuilder$LogError - WE GO T&lt;BR /&gt;│O AVRO&lt;BR /&gt;│10457 [New I/O worker #1] WARN org.apache.flume.sink.solr.morphline.MorphlineHandlerImpl - Morp&lt;BR /&gt;│hline /etc/flume/conf/conf.empty/morphlines.conf@morphline1 failed to process record: {_attachme&lt;BR /&gt;│nt_body=[[B@6d2fdb53], basename=[simple_eve.json]}&lt;/P&gt;</description>
      <pubDate>Wed, 25 Mar 2015 18:28:37 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25896#M5425</guid>
      <dc:creator>bas_vdl</dc:creator>
      <dc:date>2015-03-25T18:28:37Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25898#M5426</link>
      <description>&lt;P&gt;I've got some more trace logs that can probably help out to fix `Cannot convert item: [] to schema`&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;25 Mar 2015 20:52:28,328 TRACE [New I/O  worker #1] (org.kitesdk.morphline.base.AbstractCommand.beforeProcess:168)  - beforeProcess: {/record_type[]/alert/action=[allowed], /record_type[]/alert/category=[test2], /record_type[]/alert/severity=[3], /record_type[]/alert/signature=[GeoIP from NL, Netherlands ], /record_type[]/alert/signature_id=[88006], _attachment_body=[{"timestamp":"2015-03-23T07:42:01.303046","event_type":"alert","src_ip":"2.2.2.2","src_port":18192,"dest_ip":"46.231.41.166","dest_port":62004,"proto":"TCP","alert":{"action":"allowed","gid":"1","signature_id":"88006","rev":"1","signature":"GeoIP from NL, Netherlands ","category":"test2","severity":"3"}}], _attachment_mimetype=[json/java+memory], basename=[simple_eve.json], destination_ip=[46.231.41.166], destination_port=[62004], event_type=[alert], protocol=[TCP], source_ip=[2.2.2.2], source_port=[18192], timestamp=[2015-03-23T07:42:01.303046]}

25 Mar 2015 20:52:28,329 DEBUG [New I/O  worker #1] (org.kitesdk.morphline.avro.ToAvroBuilder$ToAvro.doProcess:156)  - Cannot convert item: [] to schema: {"type":"record","name":"Event","fields":[{"name":"timestamp","type":"string"},{"name":"event_type","type":"string"},{"name":"source_ip","type":"string"},{"name":"source_port","type":"int"},{"name":"destination_ip","type":"string"},{"name":"destination_port","type":"int"},{"name":"protocol","type":"string"},{"name":"record_type","type":[{"type":"record","name":"alert","fields":[{"name":"action","type":"string"},{"name":"signature_id","type":"string"},{"name":"signature","type":"string"},{"name":"category","type":"string"},{"name":"severity","type":"string"}]}]}]}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 25 Mar 2015 19:55:45 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25898#M5426</guid>
      <dc:creator>bas_vdl</dc:creator>
      <dc:date>2015-03-25T19:55:45Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25901#M5427</link>
      <description>An empty morphline record field can't be converted to that avro schema, of course. Make sure your input data always matches the avro schema.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 25 Mar 2015 20:16:40 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25901#M5427</guid>
      <dc:creator>whosch</dc:creator>
      <dc:date>2015-03-25T20:16:40Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25902#M5428</link>
      <description>&lt;P&gt;How the record&amp;nbsp;can be empty?&amp;nbsp;The TRACE beforProcess shows a record&amp;nbsp;with the information just before the toAvro is called.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below the original json string that is given to the Avro Source in flume:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;{"timestamp":"2015-03-23T07:42:01.303046","event_type":"alert","src_ip":"2.2.2.2","src_port":18192,"dest_ip":"46.231.41.166","dest_port":62004,"proto":"TCP","alert":{"action":"allowed","gid":"1","signature_id":"88006","rev":"1","signature":"GeoIP from NL, Netherlands ","category":"test2","severity":"3"}}&lt;/PRE&gt;</description>
      <pubDate>Wed, 25 Mar 2015 20:24:40 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25902#M5428</guid>
      <dc:creator>bas_vdl</dc:creator>
      <dc:date>2015-03-25T20:24:40Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25903#M5429</link>
      <description>The record field is empty.&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 25 Mar 2015 20:29:40 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25903#M5429</guid>
      <dc:creator>whosch</dc:creator>
      <dc:date>2015-03-25T20:29:40Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25905#M5430</link>
      <description>&lt;P&gt;Sorry, but I dont understand what you mean...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've a feeling that something is wrong with&amp;nbsp;extractJsonPaths. When I change the&amp;nbsp;record output field names (left of colon) in the&amp;nbsp;&lt;SPAN&gt;extractJsonPaths as shown below and use simple fields instead of complex nested records in the avro schema it works.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To test, I've changed this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;      # Extract JSON&lt;BR /&gt;      { extractJsonPaths { flatten: false, paths: {
              "/record_type[]/alert/action" : /alert/action,
              "/record_type[]/alert/signature_id" : /alert/signature_id,
              "/record_type[]/alert/signature" : /alert/signature,
              "/record_type[]/alert/category" : /alert/category,
              "/record_type[]/alert/severity" : /alert/severity
      } } }&lt;/PRE&gt;&lt;P&gt;Into this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;      # Extract JSON
      { extractJsonPaths { flatten: false, paths: {
              action : /alert/action,
              signature_id : /alert/signature_id,
              signature : /alert/signature,
              category : /alert/category,
              severity : /alert/severity
      } } }&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;And changed the avro schema (subrec.avsc) to this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;{
  "type" : "record",
  "name" : "Event",
  "fields" : [ {
    "name" : "timestamp",
    "type" : "string"
  }, {
    "name" : "event_type",
    "type" : "string"
  }, {
    "name" : "source_ip",
    "type" : "string"
  }, {
    "name" : "source_port",
    "type" : "int"
  }, {
    "name" : "destination_ip",
    "type" : "string"
  }, {
    "name" : "destination_port",
    "type" : "int"
  }, {
    "name" : "protocol",
    "type" : "string"
  }, {
    "name" : "action",
    "type" : "string"
  }, {
    "name" : "signature_id",
    "type" : "int"
  }, {
    "name" : "signature",
    "type" : "string"
  }, {
    "name" : "category",
    "type" : "string"
  }, {
    "name" : "severity",
    "type" : "int"
  }]
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How does the&amp;nbsp;&lt;SPAN&gt;extractJsonPaths and avro schema file should look like to get nested records working?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 25 Mar 2015 22:33:06 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/25905#M5430</guid>
      <dc:creator>bas_vdl</dc:creator>
      <dc:date>2015-03-25T22:33:06Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/26002#M5431</link>
      <description>@whoschek any chance you can help me out here?</description>
      <pubDate>Mon, 30 Mar 2015 13:05:54 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/26002#M5431</guid>
      <dc:creator>bas_vdl</dc:creator>
      <dc:date>2015-03-30T13:05:54Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/26003#M5432</link>
      <description>&lt;P&gt;The toAvro command expects a java.util.Map as input on conversion to a nested Avro record, per&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://github.com/kite-sdk/kite/blob/master/kite-morphlines/kite-morphlines-avro/src/main/java/org/kitesdk/morphline/avro/AvroConversions.java#L73-L87" target="_blank"&gt;https://github.com/kite-sdk/kite/blob/master/kite-morphlines/kite-morphlines-avro/src/main/java/org/kitesdk/morphline/avro/AvroConversions.java#L73-L87&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However,&amp;nbsp;your input data contains a (nested) Jackson JSON object, not a java.util.Map. Hence the conversion can't succeed.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Consider&amp;nbsp;writing a custom morphline command that implements whatever conversion rules you wish, per &lt;A href="http://kitesdk.org/docs/current/morphlines/morphlines-reference-guide.html#Implementing_your_own_Custom_Command&amp;nbsp;" target="_blank"&gt;http://kitesdk.org/docs/current/morphlines/morphlines-reference-guide.html#Implementing_your_own_Custom_Command&amp;nbsp;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 30 Mar 2015 13:44:06 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/26003#M5432</guid>
      <dc:creator>whosch</dc:creator>
      <dc:date>2015-03-30T13:44:06Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/26039#M5433</link>
      <description>Thank you. I'll look into writing a custom command based on this script JsonToMap, &lt;A href="http://stackoverflow.com/questions/21720759/convert-a-json-string-to-a-hashmap" target="_blank"&gt;http://stackoverflow.com/questions/21720759/convert-a-json-string-to-a-hashmap&lt;/A&gt;</description>
      <pubDate>Tue, 31 Mar 2015 07:00:47 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/26039#M5433</guid>
      <dc:creator>bas_vdl</dc:creator>
      <dc:date>2015-03-31T07:00:47Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/26641#M5434</link>
      <description>&lt;P&gt;I need to process nested JSON. How did you go about mapping the fields to the nested AVRO schema?&lt;/P&gt;</description>
      <pubDate>Mon, 20 Apr 2015 22:35:03 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/26641#M5434</guid>
      <dc:creator>buntu</dc:creator>
      <dc:date>2015-04-20T22:35:03Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/29447#M5435</link>
      <description>I have the same question. It's still not clear to me whether morphlines natively supports toAvro with nested Records, of if we have to write a custom command...</description>
      <pubDate>Thu, 09 Jul 2015 17:51:42 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/29447#M5435</guid>
      <dc:creator>davidws</dc:creator>
      <dc:date>2015-07-09T17:51:42Z</dc:date>
    </item>
    <item>
      <title>Re: JSON to Avro, Sub-records in Avro</title>
      <link>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/66310#M5436</link>
      <description>&lt;P&gt;&amp;nbsp; In fact, we can use jackson to solve this problem, and it is universal to any json data.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;morphlines: [
  {
    id: convertJsonToAvro
    importCommands: [ "org.kitesdk.**" ]
    commands: [
      # read the JSON blob
      { readJson: {} }
	  
	  # java code
	  {
			  java { 
					imports : """
					  import com.fasterxml.jackson.databind.JsonNode;
					  import com.fasterxml.jackson.databind.ObjectMapper;
					  import org.kitesdk.morphline.base.Fields;
					  import java.io.IOException;
					  import java.util.Set;
					  import java.util.ArrayList;
					  import java.util.Iterator;
					  import java.util.List;
					  import java.util.Map;
					"""

					code : """
					  String jsonStr = record.getFirstValue(Fields.ATTACHMENT_BODY).toString();
					  ObjectMapper mapper = new ObjectMapper();
					  Map&amp;lt;String, Object&amp;gt; map = null;
					  try {
						  map = (Map&amp;lt;String, Object&amp;gt;)mapper.readValue(jsonStr, Map.class);
					  } catch (IOException e) {
						  e.printStackTrace();
					  }
					  Set&amp;lt;String&amp;gt; keySet = map.keySet();
					  for (String o : keySet) {
						  record.put(o, map.get(o));
					  }
					  return child.process(record);                   
					"""
	 
			  }
	  }
      
      # convert the extracted fields to an avro object
      # described by the schema in this field
      { toAvro {
        schemaFile: /etc/flume/conf/a1/like_user_event_realtime.avsc
      } }
      
      #{ logInfo { format : "loginfo: {}", args : ["@{}"] } }
  
      # serialize the object as avro
      { writeAvroToByteArray: {
        format: containerlessBinary
      } }
  
    ]
  }
]
  &lt;/PRE&gt;</description>
      <pubDate>Fri, 13 Apr 2018 01:33:30 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Archives-of-Support-Questions/JSON-to-Avro-Sub-records-in-Avro/m-p/66310#M5436</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2018-04-13T01:33:30Z</dc:date>
    </item>
  </channel>
</rss>

