GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Feature Request: Add configurable batching for offline store writes in Feature Server push API · Issue #5683 · feast-dev/feast

Feature Request: Add configurable batching for offline store writes in Feature Server push API #5683

New issue
Copy link
New issue
Copy link
Closed
#5729
Closed
Feature Request: Add configurable batching for offline store writes in Feature Server push API#5683
#5729
Copy link
Assignees
jfw-ppi

Description

@devin-ai-integration
devin-ai-integration
bot
opened on Oct 20, 2025
Issue body actions

Is your feature request related to a problem? Please describe.

Currently, when using the Feature Server's push API with streaming ingestion, offline store writes are not automatically batched. Users must either:

  1. Manually batch calls to write_to_offline_store() in their application code
  2. Set up a separate stream processing pipeline (e.g., Spark with Kafka) to handle batching

For users receiving high-frequency feature updates (e.g., 100 requests/second) who want to write to both online and offline stores, this creates unnecessary complexity and can lead to inefficient writes to offline stores like BigQuery or Parquet.

Describe the solution you'd like

Add configurable automatic batching for offline store writes in the Feature Server, similar to how the Spark-Kafka processor handles batching via the processingTime parameter.

Proposed configuration options:

  • offline_write_batch_size: Number of records to buffer before flushing to offline store
  • offline_write_batch_interval: Time interval (seconds) to wait before flushing to offline store
  • Flush on whichever threshold is reached first

Example configuration in feature_store.yaml:

online_store:
  type: redis
  ...
offline_store:
  type: bigquery
  ...
feature_server:
  offline_write_batching:
    enabled: true
    batch_size: 1000
    batch_interval_seconds: 30

Describe alternatives you've considered

  1. Current approach with stream processor: Users can set up a Spark Structured Streaming job that reads from Kafka and uses processingTime to control batching. This works but requires additional infrastructure and complexity.

  2. Manual batching in application code: Users can implement their own buffering logic before calling write_to_offline_store(), but this duplicates effort across different applications.

  3. Use only online store: Skip offline store writes entirely during streaming and rely on periodic materialization from batch sources, but this loses the real-time historical logging capability.

Additional context

This feature request came from a community discussion about streaming ingestion patterns. When using PushMode.ONLINE_AND_OFFLINE with high-frequency updates, the lack of automatic batching can result in:

  • Excessive API calls to offline stores (one per feature update)
  • Higher costs for cloud data warehouses like BigQuery
  • Increased latency for write operations

Current implementation reference:
The Spark-Kafka processor already implements batching at sdk/python/feast/infra/contrib/spark_kafka_processor.py:134-173 using foreachBatch. Similar batching logic could be added to the Feature Server's push endpoint.

Benefits:

  • Simplified architecture for users who want real-time serving + historical logging
  • Reduced costs for offline store writes
  • Better alignment with best practices for data warehouse ingestion
  • No breaking changes (feature would be opt-in via configuration)

Related code:

  • Feature Server: sdk/python/feast/feature_store.py:1786-1828 (write_to_offline_store)
  • Spark batching example: sdk/python/feast/infra/contrib/spark_kafka_processor.py:134-173

cc @feast-dev/maintainers

Activity

Next
  1. jfw-ppi commented on Nov 15, 2025

    @jfw-ppi
    jfw-ppi
    on Nov 15, 2025
    Collaborator
    More actions

    👀

  2. jfw-ppi commented on Nov 17, 2025

    @jfw-ppi
    jfw-ppi
    on Nov 17, 2025
    Collaborator
    More actions

    I will handle this issue, please assign me if possible. I used the config suggested by Devin, but only changed the push endpoint, NOT write_to_offline_store method.

    feature_server:
      offline_write_batching:
        enabled: true
        batch_size: 1000
        batch_interval_seconds: 30

    This config is already implemented on a local branch, I'm still integration testing and can push later this week.
    Do you agree with this config switch design? @franciscojavierarceo @HaoXuAI

  3. franciscojavierarceo
    assigned
    jfw-ppi
    on Nov 17, 2025
  4. jfw-ppi
    added 6 commits that reference this issue on Nov 17, 2025

    feat: added batching to feature server /push to offline store(feast-d…

    c70777a

    feat: added batching to feature server /push to offline store (feast-…

    38334e1

    feat: added batching to feature server /push to offline store (feast-…

    3b0456a

    feat: added batching to feature server /push to offline store (feast-…

    940f774

    feat: added batching to feature server /push to offline store (feast-…

    db73935

    feat: added batching to feature server /push to offline store (feast-…

    12dc953
  5. jfw-ppi commented on Nov 18, 2025

    @jfw-ppi
    jfw-ppi
    on Nov 18, 2025
    Collaborator
    More actions

    Pull Request: #5729

  6. jfw-ppi
    added 5 commits that reference this issue on Nov 20, 2025

    feat: fixed lint error (feast-dev#5683)

    8e85fcd

    feat: added batching to feature server /push to offline store (feast-…

    8fec3cd

    feat: fixed lint error (feast-dev#5683)

    991369a

    feat: added batching to feature server /push to offline store ([feast…

    994c0cb

    feat: added batching to feature server /push to offline store (feast-…

    ed1c60d
  7. 4 remaining items

  8. jfw-ppi
    added 3 commits that reference this issue on Nov 26, 2025

    feat: added batching to feature server /push to offline store (feast-…

    107bf09

    feat: added batching to feature server /push to offline store (feast-…

    acadf46

    feat: added batching to feature server /push to offline store (feast-…

    38d7fd1
  9. ntkathole
    added a commit that references this issue on Dec 15, 2025

    feat: added batching to feature server /push to offline store (feast-…

    1a3ccbd
  10. jfw-ppi
    added 3 commits that reference this issue on Jan 1, 2026

    feat: added batching to feature server /push to offline store ([feast…

    4087487

    feat: added batching to feature server /push to offline store ([[feas…

    a99a9b0

    feat: added batching to feature server /push to offline store ([feast…

    2747405
  11. franciscojavierarceo
    closed this as completedin #5729on Jan 3, 2026
  12. franciscojavierarceo
    added a commit that references this issue on Jan 3, 2026

    feat: Added batching to feature server /push to offline store (#5683) (…

    ce35ce6
  13. franciscojavierarceo
    added a commit that references this issue on Jan 16, 2026

    chore(release): release 0.59.0

    6214d05
  14. kyledepasquale
    added a commit that references this issue on Jan 21, 2026

    chore(release): release 0.59.0

    b52f528
  15. YassinNouh21
    added 2 commits that reference this issue on Feb 7, 2026

    chore(release): release 0.59.0

    61dff40

    chore(release): release 0.59.0

    ac546ff
  16. jyejare
    added 2 commits that reference this issue on Mar 9, 2026

    feat: Added batching to feature server /push to offline store (feast-…

    e96fab7

    chore(release): release 0.59.0

    dedd393
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

  • @jfw-ppi
    jfw-ppi

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    You are visitor 01402503 — GeezerVison does not store the pages you look up.
    Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.