Giter Site home page Giter Site logo

sulfur's Introduction

Sulfur

alt text

WIP

https://www.youtube.com/watch?v=PAAvNmoqDq0

"Shaping, Processing, and Transforming Data with the Power of Sulfur"

Welcome to the Sulfur project, where we harness the elemental power of data transformation. Just like sulfur can reshape its form, our platform reshapes, processes, and transforms data, turning it into valuable insights.

Join us on this journey of alchemy where data turns into gold through customization and innovation. Unleash the potential of Sulfur and turn raw data into refined intelligence.

Usage

  1. Clone the repository:

    git clone https://github.com/emreyalvac/sulfur.git
  2. Navigate to the project directory:

    cd sulfur
  3. Install dependencies:

    cargo build
  4. Configure config.yml for your pipelines.

  5. To run pipelines, use the terminal:

    cargo run -- --config config.yml

Configuration (config.yml)

Here's an example of how to configure your pipelines using the config.yml file:

sulfur:
  - name: "Mongo to Redis"
    cron: "0 0 * * *"
    source:
      type: "Mongo"
      host: "example.com"
      port: "5432"
      user: "user"
      password: "password"
      database: "db_name"
      collection: "collection_name"
    destination:
      type: "Redis"
      host: "redis.example.com"
      port: "6379"
      password: "redis_password"
      key: "data_key"      

Configuration Details

  • Each pipeline is defined under the sulfur key.
  • name: A descriptive name for your pipeline.
  • cron (optional): The cron expression to schedule pipeline runs (e.g., "0 0 * * *" for daily runs).
  • source: Specifies the data source configuration.
  • destination: Specifies the data destination configuration.

For the source and destination configurations, you can specify various parameters based on the type of engine you're using (e.g., "Database," "Redis," "BigQuery," etc.).

Remember to customize the configuration according to your project's specific requirements.

Transform Data, Shape Intelligence

Sulfur is more than a project; it's a catalyst for data alchemy. Whether you're merging, filtering, or aggregating, Sulfur empowers you to sculpt raw data into refined insights, making your data truly valuable.

Supported Engines

Sulfur currently supports the following data storage engines:

Engine Type Description Parameters
ElasticSearch Database Use Elasticsearch as a data source or destination. host, port, user, password, index
MongoDB Database Use MongoDB as a data source or destination. host, port, user, password, database, collection
Redis In-Memory Data Store Use Redis as a data source or destination. host, port, password, key
BigQuery Data Warehouse Use Google BigQuery as a data destination. project_id, dataset_id, table_id, credentials (service_key.json)

We're committed to expanding the list of supported engines to give you even more flexibility. Adding new platforms is a straightforward process, allowing you to tailor Sulfur to your evolving data needs.

Upcoming Storage Possibilities

At Sulfur, we're committed to expanding the range of supported storage engines to cater to your evolving needs. Here's a sneak peek at some potential storage engines that might be added in the future:

  1. Amazon S3
  2. Microsoft Azure Blob Storage
  3. PostgreSQL
  4. MySQL
  5. SQLite
  6. Cassandra
  7. Apache Hadoop HDFS
  8. Amazon Redshift
  9. Snowflake
  10. Apache Kafka
  11. Oracle Database
  12. IBM Db2
  13. Microsoft SQL Server
  14. Apache Hive
  15. MongoDB Atlas
  16. Elasticsearch Service
  17. Redis Cloud
  18. Memcached
  19. InfluxDB
  20. Kafka
  21. RabbitMQ

Stay tuned as we continue to explore and add more storage engine options to the Sulfur platform. We're excited to provide you with a broader range of choices for your data storage needs!

Advanced Data Transformation

At Sulfur, we're dedicated to evolving our platform to meet your needs. We're excited to introduce a feature:

How It Works

The Advanced Data Transformation feature will provide a powerful toolkit for crafting precise data transformations. From mathematical operations to conditional logic, this feature grants you unparalleled control over your data.

Stay tuned as we work diligently to unveil this enhancement. Your data transformation possibilities are about to expand like never before!

Advanced Data Transformation using Python

Sulfur enables you to harness the power of custom Python scripts for advanced data transformation during the pipeline process. By integrating Python scripts, you can perform complex data manipulations, calculations, and enrichments before the data is forwarded to its destination.

Implementing Advanced Transformation

To demonstrate the power of custom Python scripts for data transformation, we've provided an example advanced_transform function that showcases a basic transformation:

import json

def advanced_transform(*args):
   # Unpack the arguments tuple
   data_string = args[0]

   # Load the JSON data
   data = json.loads(data_string)

   # Perform your advanced transformation here
   transformed_data = {
      "name": "TRANSFORMED",
      "original_data": data
   }

   # Convert the transformed data back to a JSON string
   transformed_json = json.dumps(transformed_data)

   return transformed_json
sulfur:
  - name: "Pipeline1"
    cron: "0 0 * * *"
    transform:
      file: './transform.py'
      fn: 'advanced_transform'
    source:
      type: "MongoDB"
      host: "mongodb.example.com"
      port: "27017"
      user: "user"
      password: "password"
      database: "db_name"
      collection: "collection_name"
    destination:
      type: "Redis"
      host: "redis.example.com"
      port: "6379"
      password: "redis_password"
      key: "data_key"

Contributing

See Contributing Guidelines for details on how to contribute to this project.

License

This project is licensed under the MIT License. See the LICENSE file for details.

sulfur's People

Contributors

emreyalvac avatar erklyn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.