0

I have a mydata.json file that is like below:

{
  "student_id": "Student 01",
  "grades": [
    {
      "english": "A",
      "semester": 1
    },
    {
      "math": "B",
      "semester": 2
    }
  ],
  "attendance": [
    {
      "present": false,
      "timestamp": "2021-11-02"
    },
    {
      "present": true,
      "timestamp": "2021-09-02"
    }
  ]
}
{
  "student_id": "Student 02",
  "grades": [
    {
      "english": "C",
      "semester": 2
    },
    {
      "math": "A",
      "semester": 1
    }
  ],
  "attendance": [
    {
      "present": true,
      "timestamp": "2021-08-02"
    },
    {
      "present": false,
      "timestamp": "2021-07-02"
    }
  ]
}

The above sample file contains two elements: Student 01 and Student 02. I am trying to load this into a kafka topic student_data such that each student (i.e. Student 01 and Student 02) becomes a separate message.

I tried using kafkacat command below but it is loading the entire file into a single message on the topic.

kcat -P -b localhost:29092 -t student_data mydata.json

Is there a way to add this to the topic so that each entry is a separate message? ...without breaking each message into a separate file.

Anthony
  • 33,838
  • 42
  • 169
  • 278

1 Answers1

3

What you've shown is not a valid JSON file. Also, the CLI tools only parse line-delimited formats

If you flattened the file into JSONlines format, use redirection

kcat -P  ... < data.jsonl

https://jsonlines.org/examples/

The same applies for kafka-console-producer

OneCricketeer
  • 179,855
  • 19
  • 132
  • 245