Ingests AIS data in Materialized and displays contents via Metabase.
flowchart
subgraph import["import"]
marinecadastre.gov(marinecadastre.gov)-- raw data --> AisProducer
AisProducer-- AVRO --> Redpanda{{Redpanda}}
Redpanda-- source --> Materialized[(Materialized)]
end
subgraph models["models"]
DBT--> Materialized
end
subgraph display["views"]
Materialized--> Metabase
Materialized--> Superset
Materialized--> Redash
Materialized--> SQLPad
Materialized--> ...
end
https://marinecadastre.gov/ais/
https://coast.noaa.gov/data/marinecadastre/ais/data-dictionary.pdf
$ docker-compose up -d
stages/1_schemas/avro/avdl/ais_vesseldata.avdl
$ cd stages/1_schemas &&\
terraform init &&\
terraform plan &&\
terraform apply
http://localhost:8084/schema-registry/AisVesselData-value
$ cd tages/2_materialize_source_kafka_connection &&
terraform init &&\
terraform plan &&\
terraform apply
http://localhost:8085/#!/model/model.example.aisvesseldata#details
$ docker-compose -f docker-compose.yml -f docker-compose-ingest.yml run ingest
http://localhost:8084/topics/AisVesselData?o=-1&p=-1&q&s=50#messages
$ docker-compose exec materialized psql -h localhost -p 6875 -c 'show objects;'
name | type
-----------------------+-------------------
aisdata | materialized-view
aisvesseldata | source
kafka_connection | connection
kafka_schema_registry | connection
$ docker-compose exec materialized psql -h localhost -p 6875 -c 'select count(*) from aisdata;'
count
-------
51
(1 row)
https://account.mapbox.com/access-tokens/create
$ MAPBOX_API_KEY=<YOUR_MAPBOX_API_KEY> docker-compose -f docker-compose.yml -f docker-compose-superset.yml up -d superset