Processing large datasets efficiently and scalably necessitates the use of distributed systems, yet the development of applications for these platforms often involves significant complexity. While ad-hoc solutions can provide high performance, they require extensive effort and result in complex code. Conversely, existing data processing frameworks like Apache Spark and Apache Flink simplify development but may not achieve the same performance levels as custom solutions. Renoir is a distributed data processing platform built in Rust based on the dataflow paradigm. It aims to bridge this gap, offering an ergonomic programming interface similar to Apache Flink while delivering significantly better performance characteristics. While Renoir provides a powerful and performant engine for distributed data processing, its primary interface is based in Rust, which can limit its accessibility to a broader audience of data analysts and engineers familiar with more common data processing languages. This thesis addresses this challenge by enhancing Renoir's usability and reach through the introduction of support for widely adopted query languages: SQL and DataFrame. Our work introduces the necessary translation layers to convert queries expressed in these languages into executable operations within Renoir's high-performance engine. A core element of this approach is the design and implementation of a common intermediate representation (IR). This IR serves as a unified target for different language frontends, abstracting away the underlying Renoir specifics and simplifying the addition of support for new query languages in the future.
L'elaborazione di grandi insiemi di dati in modo efficiente e scalabile richiede l'uso di sistemi distribuiti, ma lo sviluppo di applicazioni per queste piattaforme spesso comporta una notevole complessità. Le soluzioni ad hoc possono fornire prestazioni elevate, ma richiedono un grande impegno e danno luogo a un codice complesso. Al contrario, i framework di elaborazione dati esistenti, come Apache Spark e Apache Flink, semplificano lo sviluppo, ma potrebbero non raggiungere gli stessi livelli di prestazioni delle soluzioni personalizzate. Renoir è una piattaforma di elaborazione dati distribuita costruita in Rust e basata sul paradigma del flusso di dati. Mira a colmare questo divario, offrendo un'interfaccia di programmazione ergonomica simile a quella di Apache Flink, ma con caratteristiche prestazionali nettamente superiori. Sebbene Renoir fornisca un motore potente e performante per l'elaborazione distribuita dei dati, la sua interfaccia principale è basata su Rust, il che può limitare la sua accessibilità a un pubblico più ampio di analisti di dati e ingegneri che hanno familiarità con linguaggi di elaborazione dati più comuni. Questa tesi affronta questa sfida migliorando l'usabilità e la portata di Renoir attraverso l'introduzione del supporto per i linguaggi di interrogazione più diffusi: SQL e Dataframe. Il nostro lavoro introduce i livelli di traduzione necessari per convertire le query espresse in questi linguaggi in operazioni eseguibili all'interno del motore ad alte prestazioni di Renoir. Un elemento centrale di questo approccio è la progettazione e l'implementazione di una rappresentazione intermedia (IR) comune. Questa IR funge da target unificato per i diversi frontend di linguaggio, astraendo dalle specifiche di Renoir e semplificando l'aggiunta di supporto per nuovi linguaggi di interrogazione in futuro.
Supporting multiple domain specific languages in Renoir: a unified intermediate representation for SQL and Dataframe
Macaluso, Matteo;LAINI, MATTEO
2024/2025
Abstract
Processing large datasets efficiently and scalably necessitates the use of distributed systems, yet the development of applications for these platforms often involves significant complexity. While ad-hoc solutions can provide high performance, they require extensive effort and result in complex code. Conversely, existing data processing frameworks like Apache Spark and Apache Flink simplify development but may not achieve the same performance levels as custom solutions. Renoir is a distributed data processing platform built in Rust based on the dataflow paradigm. It aims to bridge this gap, offering an ergonomic programming interface similar to Apache Flink while delivering significantly better performance characteristics. While Renoir provides a powerful and performant engine for distributed data processing, its primary interface is based in Rust, which can limit its accessibility to a broader audience of data analysts and engineers familiar with more common data processing languages. This thesis addresses this challenge by enhancing Renoir's usability and reach through the introduction of support for widely adopted query languages: SQL and DataFrame. Our work introduces the necessary translation layers to convert queries expressed in these languages into executable operations within Renoir's high-performance engine. A core element of this approach is the design and implementation of a common intermediate representation (IR). This IR serves as a unified target for different language frontends, abstracting away the underlying Renoir specifics and simplifying the addition of support for new query languages in the future.| File | Dimensione | Formato | |
|---|---|---|---|
|
2025_07_Laini_Macaluso_Tesi.pdf
accessibile in internet per tutti
Descrizione: Master thesis
Dimensione
1.78 MB
Formato
Adobe PDF
|
1.78 MB | Adobe PDF | Visualizza/Apri |
|
2025_07_Laini_Macaluso_executive_summary.pdf
accessibile in internet per tutti
Descrizione: Executive summary
Dimensione
674.87 kB
Formato
Adobe PDF
|
674.87 kB | Adobe PDF | Visualizza/Apri |
I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/10589/240319