How to Convert Avro to CSV in Python?

πŸ’¬ Question: How to convert an .avro file to a .csv file in Python?

Solution:

To convert an Avro file my_file.avro to a CSV file my_file.csv, create a CSV writer using the csv module and iterate over all rows using the iterator returned by fastavro.reader(). Then write each row to a file using the writerow() function.

Here’s an example:

from fastavro import reader
import csv


with open('my_file.avro', 'rb') as file_object:
    csv_file = csv.writer(open("my_file.csv", "w+"))
    head = True

    for x in reader(file_object):
        if head:
            # write header
            header = emp.keys()
            csv_file.writerow(header)
            head = False

        # write normal row
        csv_file.writerow(emp.values())

Related: This code is a modified and improved version of this source.

πŸ’‘ Avro is a data serialization framework for RPCs (remote procedure calls) that uses JSON and binary format to serialize data.

πŸ’‘ CSV stands for comma-separated values, so you have a row-based file format where values are separated by commas, and the file is named using the suffix .csv.