MCPcopy Index your code
hub / github.com/apache/fluss

github.com/apache/fluss @v0.9.1-incubating

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.9.1-incubating ↗ · + Follow
21,911 symbols 114,810 edges 2,410 files 5,821 documented · 27%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
  <img alt="Apache Fluss logo" src="https://github.com/apache/fluss/raw/v0.9.1-incubating/website/static/img/logo/svg/white_filled.svg">

Documentation | QuickStart | Development

CI License Slack Ask DeepWiki

What is Apache Fluss (Incubating)?

Apache Fluss (Incubating) is a streaming storage built for real-time analytics & AI which can serve as the real-time data layer for Lakehouse architectures.

It bridges the gap between data streaming and data Lakehouse by enabling low-latency, high-throughput data ingestion and processing while seamlessly integrating with popular compute engines like Apache Flink, while Apache Spark, and StarRocks are coming soon.

Fluss (German: river, pronounced /flus/) enables streaming data continuously converging, distributing and flowing into lakes, like a river 🌊

Features

  • Sub-Second Data Freshness: Continuous ingestion and immediate availability of data enable low-latency analytics and real-time decision-making at scale.
  • Streaming & Lakehouse Unification: Streaming-native storage with low-latency access on top of the lakehouse, using tables as a single abstraction to unify real-time and historical data across engines.
  • Columnar Streaming: Based on Apache Arrow it allows database primitives on data streams and techniques like column pruning and predicate pushdown. This ensures engines read only the data they need, minimizing I/O and network costs.
  • Compute–Storage Separation: Stream processors focus on pure computation while Fluss manages state and storage, with features like deduplication, partial updates, delta joins, and aggregation merge engines.
  • ML & AI–Ready Storage: A unified storage layer supporting row-based, columnar, vector, and multi-modal data, enabling real-time feature stores and a centralized data repository for ML and AI systems.
  • Changelogs & Decision Tracking: Built-in changelog generation provides an append-only history of state and decision evolution, enabling auditing, reproducibility, and deep system observability.

Building

Prerequisites for building Apache Fluss:

  • Unix-like environment (we use Linux, Mac OS X, Cygwin, WSL)
  • Git
  • Maven (we require version >= 3.8.6)
  • Java 11
git clone https://github.com/apache/fluss.git
cd fluss
./mvnw clean package -DskipTests

Apache Fluss is now installed in build-target. The build command uses Maven Wrapper (mvnw) which ensures the correct Maven version is used.

Contributing

Apache Fluss (Incubating) is open-source, and we’d love your help to keep it growing! Join the discussions, open issues if you find a bug or request features, contribute code and documentation, or help us improve the project in any way. All contributions are welcome!

License

Apache Fluss (Incubating) project is licensed under the Apache License 2.0.

Extension points exported contracts — how you extend this code

TypeSerializerCreator (Interface)
Creator that, given a TypeInformation, returns its serializer for the current config. Passed by the adapter so that conf [6 …
fluss-flink/fluss-flink-2.2/src/main/java/org/apache/fluss/flink/adapter/TypeInformationAdapter.java
TableChange (Interface)
TableChange represents the modification of the table. [11 implementers]
fluss-flink/fluss-flink-1.19/src/main/java/org/apache/flink/table/catalog/TableChange.java
FlussDeserializationConverter (Interface)
Runtime converter to convert field in Fluss's InternalRow to Flink's RowData type object. [70 implementers]
fluss-flink/fluss-flink-common/src/main/java/org/apache/fluss/flink/utils/FlussRowToFlinkRowConverter.java
TypeSerializerCreator (Interface)
Creator that, given a TypeInformation, returns its serializer for the current config. Passed by the adapter so that conf [6 …
fluss-flink/fluss-flink-1.18/src/main/java/org/apache/fluss/flink/adapter/TypeInformationAdapter.java
CustomExtension (Interface)
An extension that is invoked before/after all/each tests, depending on whether it is wrapped in a {@link EachCallbackWra [17 …
fluss-test-utils/src/main/java/org/apache/fluss/testutils/common/CustomExtension.java
TypedLookuper (Interface)
A typed lookuper performs key-based lookups against a primary key table using POJOs. @param the type of the lookup [13 …
fluss-client/src/main/java/org/apache/fluss/client/lookup/TypedLookuper.java
SequenceIDCounter (Interface)
A counter for generating unique sequence IDs. [6 implementers]
fluss-server/src/main/java/org/apache/fluss/server/SequenceIDCounter.java
TabletServerGateway (Interface)
The entry point of RPC gateway interface for tablet server. [6 implementers]
fluss-rpc/src/main/java/org/apache/fluss/rpc/gateway/TabletServerGateway.java

Core symbols most depended-on inside this repo

get
called by 2817
fluss-common/src/main/java/org/apache/fluss/config/ReadableConfig.java
get
called by 1573
fluss-server/src/main/java/org/apache/fluss/server/kv/snapshot/SnapshotResultSupplier.java
format
called by 1372
fluss-rpc/src/main/java/org/apache/fluss/rpc/netty/NettyLogger.java
size
called by 1305
fluss-common/src/main/java/org/apache/fluss/row/InternalMap.java
put
called by 1242
fluss-server/src/main/java/org/apache/fluss/server/kv/KvBatchWriter.java
add
called by 1132
fluss-server/src/main/java/org/apache/fluss/server/utils/timer/Timer.java
asList
called by 1110
fluss-common/src/main/java/org/apache/fluss/config/ConfigBuilder.java
build
called by 964
fluss-server/src/main/java/org/apache/fluss/server/kv/wal/WalBuilder.java

Shape

Method 18,756
Class 2,772
Interface 271
Enum 94
Function 18

Languages

Java100%
TypeScript1%

Modules by API surface

fluss-filesystems/fluss-fs-s3/src/main/java/com/amazonaws/services/s3/model/transform/XmlResponsesSaxParser.java180 symbols
fluss-server/src/main/java/org/apache/fluss/server/zk/data/ZkData.java135 symbols
fluss-server/src/main/java/org/apache/fluss/server/zk/ZooKeeperClient.java116 symbols
fluss-flink/fluss-flink-1.19/src/main/java/org/apache/flink/table/catalog/TableChange.java112 symbols
fluss-flink/fluss-flink-1.18/src/main/java/org/apache/flink/table/catalog/TableChange.java112 symbols
fluss-server/src/main/java/org/apache/fluss/server/replica/Replica.java97 symbols
fluss-server/src/main/java/org/apache/fluss/server/utils/ServerRpcMessageUtils.java92 symbols
fluss-server/src/main/java/org/apache/fluss/server/log/LogTablet.java85 symbols
fluss-server/src/main/java/org/apache/fluss/server/replica/ReplicaManager.java82 symbols
fluss-server/src/main/java/org/apache/fluss/server/coordinator/CoordinatorContext.java80 symbols
fluss-rpc/src/test/java/org/apache/fluss/rpc/protocol/RequestChannelTest.java80 symbols
fluss-common/src/test/java/org/apache/fluss/row/columnar/ColumnarArrayTest.java75 symbols

Datastores touched

icebergDatabase · 1 repos

For agents

$ claude mcp add fluss \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact