All Projects → higherkindness → avro-parser-haskell

higherkindness / avro-parser-haskell

Licence: Apache-2.0 license
Language definition and parser for AVRO (.avdl) files.

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to avro-parser-haskell

avro turf
A library that makes it easier to use the Avro serialization format from Ruby.
Stars: ✭ 130 (+828.57%)
Mutual labels:  avro, avro-data
avro-serde-php
Avro Serialisation/Deserialisation (SerDe) library for PHP 7.3+ & 8.0 with a Symfony Serializer integration
Stars: ✭ 43 (+207.14%)
Mutual labels:  avro, avro-format
AvroConvert
Apache Avro serializer for .NET
Stars: ✭ 44 (+214.29%)
Mutual labels:  avro, avro-format
kafka-scala-examples
Examples of Avro, Kafka, Schema Registry, Kafka Streams, Interactive Queries, KSQL, Kafka Connect in Scala
Stars: ✭ 53 (+278.57%)
Mutual labels:  avro
fast-avro-write
Writing an Avro file is not as fast as you might want it. This is a library to write considerably faster to an avro file.
Stars: ✭ 32 (+128.57%)
Mutual labels:  avro
kafka-serialization
Lego bricks to build Apache Kafka serializers and deserializers
Stars: ✭ 122 (+771.43%)
Mutual labels:  avro
columnify
Make record oriented data to columnar format.
Stars: ✭ 28 (+100%)
Mutual labels:  avro
sbt-avro
Plugin SBT to Generate Scala classes from Apache Avro schemas hosted on a remote Confluent Schema Registry.
Stars: ✭ 15 (+7.14%)
Mutual labels:  avro
kafka-avro-confluent
Kafka De/Serializer using avro and Confluent's Schema Registry
Stars: ✭ 18 (+28.57%)
Mutual labels:  avro
tamer
Standalone alternatives to Kafka Connect Connectors
Stars: ✭ 42 (+200%)
Mutual labels:  avro
darwin
Avro Schema Evolution made easy
Stars: ✭ 26 (+85.71%)
Mutual labels:  avro
singlestore-logistics-sim
Scalable package delivery logistics simulator built using SingleStore and Vectorized Redpanda
Stars: ✭ 31 (+121.43%)
Mutual labels:  avro
parquet-extra
A collection of Apache Parquet add-on modules
Stars: ✭ 30 (+114.29%)
Mutual labels:  avro
php-kafka-lib
PHP Kafka producer / consumer library with PHP Avro support, based on php-rdkafka
Stars: ✭ 38 (+171.43%)
Mutual labels:  avro
parquet-flinktacular
How to use Parquet in Flink
Stars: ✭ 29 (+107.14%)
Mutual labels:  avro
DataProfiler
What's in your data? Extract schema, statistics and entities from datasets
Stars: ✭ 843 (+5921.43%)
Mutual labels:  avro
DaFlow
Apache-Spark based Data Flow(ETL) Framework which supports multiple read, write destinations of different types and also support multiple categories of transformation rules.
Stars: ✭ 24 (+71.43%)
Mutual labels:  avro
avrow
Avrow is a pure Rust implementation of the avro specification https://avro.apache.org/docs/current/spec.html with Serde support.
Stars: ✭ 27 (+92.86%)
Mutual labels:  avro
avrocount
Count records in Avro files efficiently
Stars: ✭ 16 (+14.29%)
Mutual labels:  avro
schema-registry
📙 json & avro http schema registry backed by Kafka
Stars: ✭ 23 (+64.29%)
Mutual labels:  avro

avro-parser-haskell

Actions Status Hackage Stackage Nightly Stackage LTS Hackage-Deps ormolu

Language definition and parser for AVRO (.avdl) files.

Example

#!/usr/bin/env stack
-- stack --resolver lts-18.19 script --package language-avro,pretty-simple

module Main where

import Language.Avro.Parser (readWithImports)
import Text.Pretty.Simple (pPrint)

main :: IO ()
main =
  readWithImports "test" "PeopleService.avdl"
    >>= either putStrLn pPrint
-- λ>
-- Protocol
--   { ns = Just
--       ( Namespace
--           [ "example"
--           , "seed"
--           , "server"
--           , "protocol"
--           , "avro"
--           ]
--       )
--   , pname = "PeopleService"
--   , imports = [ IdlImport "People.avdl" ]
--   , types =
--       [ Record
--           { name = "Person"
--           , aliases = []
--           , doc = Nothing
--           , order = Nothing
--           , fields =
--               [ Field
--                   { fldName = "name"
--                   , fldAliases = []
--                   , fldDoc = Nothing
--                   , fldOrder = Nothing
--                   , fldType = String { logicalTypeS = Nothing }
--                   , fldDefault = Nothing
--                   }
--               , Field
--                   { fldName = "age"
--                   , fldAliases = []
--                   , fldDoc = Nothing
--                   , fldOrder = Nothing
--                   , fldType = Int { logicalTypeI = Nothing }
--                   , fldDefault = Nothing
--                   }
--               ]
--           }
--       , Record
--           { name = "NotFoundError"
--           , aliases = []
--           , doc = Nothing
--           , order = Nothing
--           , fields =
--               [ Field
--                   { fldName = "message"
--                   , fldAliases = []
--                   , fldDoc = Nothing
--                   , fldOrder = Nothing
--                   , fldType = String { logicalTypeS = Nothing }
--                   , fldDefault = Nothing
--                   }
--               ]
--           }
--       , Record
--           { name = "DuplicatedPersonError"
--           , aliases = []
--           , doc = Nothing
--           , order = Nothing
--           , fields =
--               [ Field
--                   { fldName = "message"
--                   , fldAliases = []
--                   , fldDoc = Nothing
--                   , fldOrder = Nothing
--                   , fldType = String { logicalTypeS = Nothing }
--                   , fldDefault = Nothing
--                   }
--               ]
--           }
--       , Record
--           { name = "PeopleRequest"
--           , aliases = []
--           , doc = Nothing
--           , order = Nothing
--           , fields =
--               [ Field
--                   { fldName = "name"
--                   , fldAliases = []
--                   , fldDoc = Nothing
--                   , fldOrder = Nothing
--                   , fldType = String { logicalTypeS = Nothing }
--                   , fldDefault = Nothing
--                   }
--               ]
--           }
--       , Record
--           { name = "PeopleResponse"
--           , aliases = []
--           , doc = Nothing
--           , order = Nothing
--           , fields =
--               [ Field
--                   { fldName = "result"
--                   , fldAliases = []
--                   , fldDoc = Nothing
--                   , fldOrder = Nothing
--                   , fldType = Union
--                       { options =
--                           [ NamedType "Person"
--                           , NamedType "NotFoundError"
--                           , NamedType "DuplicatedPersonError"
--                           ]
--                       }
--                   , fldDefault = Nothing
--                   }
--               ]
--           }
--       ]
--   , messages =
--       [ Method
--           { mname = "getPerson"
--           , args =
--               [ Argument
--                   { atype = NamedType "example.seed.server.protocol.avro.PeopleRequest"
--                   , aname = "request"
--                   }
--               ]
--           , result = NamedType "example.seed.server.protocol.avro.PeopleResponse"
--           , throws = Null
--           , oneway = False
--           }
--       ]
--   }

⚠️ Warning: readWithImports only works right now if the import type is "idl"!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].