explaingit

lourousa/frauddetection

Analysis updated 2026-05-18

17JavaAudience · developerComplexity · 4/5Setup · hard

TLDR

A demo project showing how Apache Fluss, Flink, and Iceberg work together for real-time bank fraud detection with both hot and cold data access.

Mindmap

mindmap
  root((repo))
    What it does
      Streams transactions
      Detects fraud
      Enriches records
    Tech stack
      Java
      Flink
      Fluss
      Iceberg
      MinIO
    Use cases
      Hot data lookup
      Cold data lookup
      Lakehouse tiering
    Audience
      Data engineers
      Streaming developers

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

See a working example of streaming fraud detection using Apache Fluss and Flink.

USE CASE 2

Learn how to tier streaming data into an Iceberg lakehouse automatically.

USE CASE 3

Explore a hot and cold data access pattern for real-time transaction analysis.

What is it built with?

JavaApache FlinkApache FlussApache IcebergDockerMinIO

How does it compare?

lourousa/frauddetectioncornerdevice/checkappdeviceandrea-lyz/melodycodectweaker
Stars171716
LanguageJavaJavaJava
Setup difficultyhardhardmoderate
Complexity4/54/53/5
Audiencedeveloperdevelopergeneral

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1h+

Requires Docker Compose and is explicitly not production ready.

In plain English

This project is an experimental demonstration of a "streamhouse" architecture, a system that bridges real-time data streaming with long-term data storage, built specifically to show how Apache Fluss (an incubating Apache project) can work alongside Apache Flink and Apache Iceberg for real-time fraud detection on bank transactions. The system processes transactions as they arrive, identifies suspicious ones using a Flink-based job, and then enriches those fraud records with account details by doing a live lookup against an account table. This enrichment step uses a temporal streaming lookup join, treating the account table as a reference dimension rather than a second stream. Once enriched, the fraud records flow into a long-term storage layer backed by an Iceberg table stored on MinIO, which is an S3-compatible object storage system. Metadata for the Iceberg tables is managed through an Iceberg REST catalog. Data is available at two speeds: hot (sub-second latency for recent transactions still in Fluss) and cold (minutes latency for historical records in the Iceberg layer). Three tables are created in Fluss: a transaction log, an account table that supports updates and deletes, and an enriched fraud log with data-lake tiering enabled. When tiering is enabled, Fluss automatically creates a matching Iceberg table and compacts data into it via a built-in Flink service, so historical records accumulate in the lakehouse without manual pipeline work. The project is deployed using Docker Compose and is written in Java. The README notes it is intended for exploration only and is not production-ready: cluster sizing and security configuration are minimal.

Copy-paste prompts

Prompt 1
Explain how Apache Fluss, Flink, and Iceberg work together in this fraud detection demo.
Prompt 2
Walk me through deploying this project with Docker Compose.
Prompt 3
What is data lake tiering and how does it work in this project's enriched fraud log table?
Prompt 4
Describe the difference between hot and cold data access in this system.

Frequently asked questions

What is frauddetection?

A demo project showing how Apache Fluss, Flink, and Iceberg work together for real-time bank fraud detection with both hot and cold data access.

What language is frauddetection written in?

Mainly Java. The stack also includes Java, Apache Flink, Apache Fluss.

How hard is frauddetection to set up?

Setup difficulty is rated hard, with roughly 1h+ to a first successful run.

Who is frauddetection for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.