This is an automated email from the ASF dual-hosted git repository.
polyzos pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss-blog.git
The following commit(s) were added to refs/heads/main by this push:
new 4de6b2e docs: fix typos in blog posts (#6)
4de6b2e is described below
commit 4de6b2ef63fdb1f053cc479ebfeecc417a99677e
Author: Mukunda Rao Katta <[email protected]>
AuthorDate: Fri May 15 01:30:13 2026 -0700
docs: fix typos in blog posts (#6)
---
blog/2025-06-01-partial-updates.md | 2 +-
blog/2025-07-07-fluss-java-client.md | 4 ++--
blog/2026-02-01-fluss-fraud-detection.md | 4 ++--
blog/2026-03-05-fluss-for-ai.md | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/blog/2025-06-01-partial-updates.md
b/blog/2025-06-01-partial-updates.md
index a250401..d5e8d69 100644
--- a/blog/2025-06-01-partial-updates.md
+++ b/blog/2025-06-01-partial-updates.md
@@ -137,7 +137,7 @@ INSERT INTO clicks VALUES
> **Note:** 🚨 So far the jobs we run were bounded jobs, so they will finish
> after inserting the records. Moving forward we will run some streaming jobs.
So keep in mind that each job runs with a `parallelism of 3` and our
environment is set up `with 10 slots total`.
-So make sure to keep an eye to the Flink Web UI to see how many slots are used
and how many are available and stop some jobs when are no longer needed to free
up resourecs.
+So make sure to keep an eye to the Flink Web UI to see how many slots are used
and how many are available and stop some jobs when are no longer needed to free
up resources.
**Step 4:** At this point let's open up a separate terminal and start the
Flink SQL CLI.
diff --git a/blog/2025-07-07-fluss-java-client.md
b/blog/2025-07-07-fluss-java-client.md
index c332fbc..24e5385 100644
--- a/blog/2025-07-07-fluss-java-client.md
+++ b/blog/2025-07-07-fluss-java-client.md
@@ -244,7 +244,7 @@ LogScanner logScanner = readingsTable.newScan()
```
```java
-Lookuper sensorInforLookuper = sensorInfoTable
+Lookuper sensorInfoLookuper = sensorInfoTable
.newLookup()
.createLookuper();
```
@@ -270,7 +270,7 @@ and creating a **SensorReadingEnriched** record.
logger.info("Received reading from sensor '{}' at '{}'.",
row.getInt(0), row.getTimestampNtz(1, 6).toString());
logger.info("Performing lookup to get the information for sensor
'{}'. ", row.getInt(0));
- LookupResult lookupResult = sensorInforLookuper.lookup(row).get();
+ LookupResult lookupResult = sensorInfoLookuper.lookup(row).get();
SensorInfo sensorInfo = lookupResult.getRowList().stream().map(r
-> new SensorInfo(
r.getInt(0),
r.getString(1).toString(),
diff --git a/blog/2026-02-01-fluss-fraud-detection.md
b/blog/2026-02-01-fluss-fraud-detection.md
index 3ac3983..62dd023 100644
--- a/blog/2026-02-01-fluss-fraud-detection.md
+++ b/blog/2026-02-01-fluss-fraud-detection.md
@@ -461,7 +461,7 @@ public DataStream<Transaction> createSource() {
.name("transactions-datastream");
}
```
-As you can see in the snippet below , the deserialization of the Fluss
`LogRecord` from the Transaction table into the `Transaction` POJO required by
the DataStream type is handled by the `TransactionDeserializationSchema` class,
which extends `FlussDeserializationSchema` to override the `deserialize`
method. The `record` is used to instanciate a `Transaction` POJO. The
corresponding changeLog type is mapped into the `kind` field and since the
Fluss source is a Log Table it always equals [...]
+As you can see in the snippet below , the deserialization of the Fluss
`LogRecord` from the Transaction table into the `Transaction` POJO required by
the DataStream type is handled by the `TransactionDeserializationSchema` class,
which extends `FlussDeserializationSchema` to override the `deserialize`
method. The `record` is used to instantiate a `Transaction` POJO. The
corresponding changeLog type is mapped into the `kind` field and since the
Fluss source is a Log Table it always equals [...]
Snippet from TransactionDeserializationSchema.java
```java
@@ -590,7 +590,7 @@ public DataStream<EnrichedFraud>
transform(DataStream<Fraud> fraudsDs) {
The ```fraudsView``` is a dynamic table created on top of the fraud stream.
It exposes a processing-time attribute.
For each record in ```f``` (```fraudsView```), the corresponding account row
is looked up as it existed at the processing time of ```f``` (```f.procTime```).
-Enriched records are converted back and returned as a
`DataStream<EnrichedFraud>` in order to be written to the Fluss sink by the
next startegy.
+Enriched records are converted back and returned as a
`DataStream<EnrichedFraud>` in order to be written to the Fluss sink by the
next strategy.
### 5. SinkStrategy interface and FraudFlussSinkStrategy implementation
This interface models the writing of a `Datastream<T>` to the FlinkSink,
exposing the `createSink` method.
diff --git a/blog/2026-03-05-fluss-for-ai.md b/blog/2026-03-05-fluss-for-ai.md
index 9056dc0..5d57447 100644
--- a/blog/2026-03-05-fluss-for-ai.md
+++ b/blog/2026-03-05-fluss-for-ai.md
@@ -108,7 +108,7 @@ As these capabilities came together, we started noticing a
recurring pattern: te
At its core, a feature store exists to compute and serve features, the
structured inputs consumed by machine learning models. These features might
represent recent activity, aggregated behavior, derived metrics, or
continuously updated scores that capture how an entity changes over time.
-The reason feature stores exist at all is a well-known failure mode in
production ML systems. Trainin data is often computed offline using batch
pipelines, while inference data is computed online using streaming or
request-time logic. Over time, these two paths drift apart in logic, timing, or
semantics.
+The reason feature stores exist at all is a well-known failure mode in
production ML systems. Training data is often computed offline using batch
pipelines, while inference data is computed online using streaming or
request-time logic. Over time, these two paths drift apart in logic, timing, or
semantics.
This divergence is commonly referred to as **training–serving skew**. It’s
subtle, hard to detect early, and is responsible for a large number of models
underperforming in production despite looking correct during training and
evaluation.