Apache Amoro (incubating) is a Lakehouse management system built on open data lake formats. Working with compute engines including Flink, Spark, and Trino, Amoro brings pluggable and self-managed features for Lakehouse to provide out-of-the-box data warehouse experience, and helps data platforms or products easily build infra-decoupled, stream-and-batch-fused and lake-native architecture.
Learn more about Amoro at https://amoro.apache.org/, contact the developers and community on the mailing list if you need any help.
Here is the architecture diagram of Amoro:
Amoro can manage tables of different table formats, similar to how MySQL/ClickHouse can choose different storage engines. Amoro meets diverse user needs by using different table formats. Currently, Amoro supports four table formats:
Iceberg format tables use the engine integration method provided by the Iceberg community. For details, please refer to: Iceberg Docs.
Amoro support multiple processing engines for Mixed format as below:
| Processing Engine | Version | Batch Read | Batch Write | Batch Overwrite | Streaming Read | Streaming Write | Create Table | Alter Table |
|---|---|---|---|---|---|---|---|---|
| Flink | 1.16.x, 1.17.x, 1.18.x | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✖ |
| Spark | 3.1, 3.2, 3.3 | ✔ | ✔ | ✔ | ✖ | ✖ | ✔ | ✔ |
| Hive | 2.x, 3.x | ✔ | ✖ | ✔ | ✖ | ✖ | ✖ | ✔ |
| Trino | 406 | ✔ | ✖ | ✔ | ✖ | ✖ | ✖ | ✔ |
Amoro contains modules as below:
amoro-common contains core abstractions and common implementation for other modulesamoro-ams is amoro management service moduleamoro-web is the dashboard frontend for amsamoro-optimizer provides default optimizer implementationamoro-format-iceberg contains integration of Apache Iceberg formatamoro-format-hudi contains integration of Apache Hudi formatamoro-format-paimon contains integration of Apache Paimon formatamoro-format-mixed provides Mixed format implementationamoro-mixed-hive integrates with Apache Hive and implements Mixed Hive formatamoro-mixed-flink provides Flink connectors for Mixed format tables (use amoro-flink-runtime for a shaded version)amoro-mixed-spark provides Spark connectors for Mixed format tables (use amoro-spark-runtime for a shaded version)amoro-mixed-trino provides Trino connectors for Mixed format tablesAmoro is built using Maven with JDK 8, 11 and 17(required for amoro-format-mixed/amoro-mixed-trino module).
amoro-mixed-trino: mvn clean packagemvn clean package -DskipTestsmvn clean package -Pskip-dashboard-buildmvn clean package -DskipTests -Pno-extented-disk-storagemvn clean package -DskipTests -Paliyun-oss-sdkmvn clean package -DskipTests -Phadoop2mvn clean package -DskipTests -Dflink-optimizer.flink-version=1.20.0-Pflink-optimizer-pre-1.15 parameter: mvn clean package -DskipTests -Pflink-optimizer-pre-1.15 -Dflink-optimizer.flink-version=1.14.6mvn clean package -DskipTests -Dspark-optimizer.spark-version=3.3.3amoro-mixed-trino module under JDK 17: mvn clean package -DskipTests -Pformat-mixed-format-trino,build-mixed-format-trino -pl 'amoro-format-mixed/amoro-mixed-trino' -am.mvn clean package -DskipTests -Ptoolchain,build-mixed-format-trino, besides you need config toolchains.xml in ${user.home}/.m2/ dir with content below.mvn clean package -Psupport-all-formatsmvn clean package -Psupport-paimon-formatmvn clean package -Psupport-hudi-format<?xml version="1.0" encoding="UTF-8"?>
<toolchains>
<toolchain>
<type>jdk</type>
<provides>
<version>17</version>
<vendor>sun</vendor>
</provides>
<configuration>
<jdkHome>${YourJDK17Home}</jdkHome>
</configuration>
</toolchain>
</toolchains>
Visit https://amoro.apache.org/quick-start/ to quickly explore what amoro can do.
If you are interested in Lakehouse, Data Lake Format, welcome to join our community, we welcome any organizations, teams and individuals to grow together, and sincerely hope to help users better use Data Lake Format through open source.
You can join the Amoro community on Slack. Amoro channel is in ASF Slack workspace.
dev@amoro.apache.org to apply for an ASF Slack invitation. Then join Amoro channel.Join the Amoro WeChat Group: Add " kllnn999 " as a friend and request to join the group.
This project exists thanks to all the people who contribute.
Made with contrib.rocks.