Skip to content

Repository files navigation

Marisync 🌊

Scala Version Spark Version Delta Lake Databricks Python License

Real-time oceanographic data integration and analysis platform using Databricks.

Overview

Marisync is a scalable platform for ingesting, processing, and analyzing oceanographic data from multiple sources in real-time. It leverages Scala's type safety and concurrency features along with Databricks' unified analytics platform.

Data Sources

  • NOAA National Data Buoy Center (NDBC)
  • Argo Float Network
  • Ocean Observatories Initiative (OOI)
  • Copernicus Marine Service (CMEMS)
  • IOOS (Integrated Ocean Observing System)

Key Measurements

  • Temperature (°C)
  • Salinity (PSU)
  • Dissolved Oxygen (mg/L)
  • pH Levels
  • Turbidity (NTU)
  • Chlorophyll (μg/L)
  • Current Speed (m/s)
  • Current Direction (degrees)

Why Scala?

  1. Type Safety: Early error detection through strong type system
  2. Concurrency: Built-in support for handling multiple data streams
  3. Spark Integration: Native language for Apache Spark
  4. Performance: JVM-based with functional programming optimizations
  5. Interoperability: Seamless Java library integration

Databricks Integration

  • Real-time data processing using Structured Streaming
  • Delta Lake for ACID transactions and time travel
  • MLflow for model tracking and deployment
  • Databricks Jobs for orchestration
  • Unity Catalog for data governance

Architecture

graph LR
    A[Data Sources] --> B[Connectors]
    B --> C[Stream Processor]
    C --> D[Delta Lake]
    D --> E[ML Pipeline]
    E --> F[Analysis Dashboard]
Loading

Setup

  1. Install dependencies:

    sbt compile
    pip install -r requirements.txt
  2. Configure Databricks CLI:

    pip install databricks-cli
    databricks configure --token
  3. Set environment variables:

    cp .env.template .env
    # Edit .env with your credentials

Development

Running Tests

sbt test

Local Development

sbt run

Databricks Deployment

databricks workspace import

Project Structure

marisync/
├── src/
│   ├── main/
│   │   ├── scala/
│   │   │   ├── connectors/    # Data source connectors
│   │   │   ├── pipeline/      # Stream processing
│   │   │   ├── models/        # Data models
│   │   │   └── utils/         # Common utilities
│   │   └── python/
│   │       └── ml/            # Machine learning models
│   └── test/
├── jobs/                      # Databricks job configs
└── notebooks/                 # Databricks notebooks

Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Technologies

  • Languages: Scala, Python
  • Processing: Apache Spark, Structured Streaming
  • Storage: Delta Lake
  • Platform: Databricks
  • ML: MLflow, scikit-learn
  • Data Sources: NDBC, Argo, OOI, CMEMS
  • Testing: ScalaTest, Mockito
  • Build Tool: sbt

About

Live environmental data sync for analytics using scala, python, Kafka, Spark, Unity Catalog, Delta Lake, MLflow and Databricks.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages