<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Streaming Doesn't Mean Your Compute Needs to Run Forever in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/streaming-doesn-t-mean-your-compute-needs-to-run-forever/m-p/166077#M55524</link>
    <description>&lt;P class=""&gt;&lt;SPAN&gt;When I first started working with streaming in Databricks, I had a very simple picture in my head:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Streaming = keep the cluster running and process data continuously.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;New data arrives → Spark sees it → process it → repeat forever.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Technically, that can be streaming.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But while building a pipeline around &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;GDELT data flowing through Azure Data Lake into Databricks&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;, I started realizing something much more important:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;The architecture of a streaming system should be driven by how quickly the business needs the data — not by the fact that the source keeps producing data.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;That distinction completely changed the way I started looking at Structured Streaming.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Imagine my source receives a new file every few minutes.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Does the business really need the result within 2 seconds?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Maybe.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Fraud detection probably does.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Real-time personalization might.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Monitoring an industrial system might.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But what if I am processing news articles for NLP analysis?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;If predictions become available 5, 10, or even 15 minutes later, does anything actually break?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Probably not.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;And suddenly keeping compute alive continuously starts looking less like a technical requirement and more like an expensive architectural assumption.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;H3&gt;&lt;SPAN&gt;This is where &lt;/SPAN&gt;&lt;SPAN&gt;AvailableNow&lt;/SPAN&gt;&lt;SPAN&gt; became interesting to me.&lt;/SPAN&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;Instead of thinking:-&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;"My stream must always be running."&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I can think -&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;"Process everything that has arrived since the previous run, maintain the state of the pipeline, and then stop."&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Databricks Structured Streaming supports exactly this pattern with &lt;/SPAN&gt;&lt;SPAN&gt;Trigger.AvailableNow()&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It processes the available unprocessed data—potentially across multiple micro-batches—and then terminates. The checkpoint allows the next execution to continue from the appropriate position rather than blindly starting everything again.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;That sounds like a small configuration choice.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But architecturally, it is much bigger.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It separates two concepts that I had initially mixed together:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Streaming data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;SPAN&gt;always-on compute.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;They are not necessarily the same thing.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;H3&gt;&lt;SPAN&gt;Then checkpoints started making much more sense.&lt;/SPAN&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;Initially, I looked at a checkpoint directory as just another configuration that Spark required.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Something we add because the documentation says so.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But a checkpoint is really the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;memory of the streaming application&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It helps the stream remember its progress and state.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Without that memory, restarting a pipeline safely becomes much harder.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;With it, the system can essentially say:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;EM&gt;&lt;SPAN&gt;"I've already dealt with this part of the stream. Let's continue from where we were."&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Databricks explicitly describes the checkpoint as providing the unique identity for a stream while tracking processed records and associated state.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Once I understood that, checkpoints stopped feeling like infrastructure clutter.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;They became part of the reliability architecture.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;H3&gt;&lt;SPAN&gt;Micro-batches gave me another realization.&lt;/SPAN&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;At first, the word "streaming" made me imagine one record travelling through the architecture at a time.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But Spark Structured Streaming often operates differently.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Records arriving during a period are grouped and processed incrementally as &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;micro-batches&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;And that gives us another architectural control point.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;If incoming data suddenly increases, we don't necessarily want one enormous batch consuming everything the source can provide.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Databricks provides controls such as &lt;/SPAN&gt;&lt;SPAN&gt;maxFilesPerTrigger&lt;/SPAN&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;SPAN&gt;maxBytesPerTrigger&lt;/SPAN&gt;&lt;SPAN&gt; for controlling how much Auto Loader processes per micro-batch. This can help keep resource consumption more predictable.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Again, this isn't just Spark configuration.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It is capacity planning.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;H3&gt;&lt;SPAN&gt;And this is probably my biggest takeaway.&lt;/SPAN&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;When learning platforms like Databricks, it is easy to spend too much time asking:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;"Which API should I use?"&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But the more useful questions are:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;How fresh does my data actually need to be?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;What happens when my pipeline stops?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;How does it know what has already been processed?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;What happens if 10 files suddenly become 10,000 files?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Am I paying for latency that nobody actually needs?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;These questions lead naturally to concepts such as Auto Loader, checkpoints, trigger strategies, admission controls, observability, and pipeline orchestration.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Auto Loader itself is designed to incrementally discover and process new files arriving in cloud object storage, and Databricks now recommends using it with Lakeflow pipelines for many production incremental-ingestion workloads.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;So today, when I hear:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;EM&gt;&lt;SPAN&gt;"We need streaming."&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;My next question is no longer:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;EM&gt;&lt;SPAN&gt;"Which streaming API should we use?"&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It is:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;"What latency does the business actually need?"&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Because sometimes the best streaming architecture isn't the one processing every second.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It is the one that knows &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;when to process, what has already been processed, how much to process at once — and when to shut itself down.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;That, for me, was the point where Structured Streaming started feeling less like a Spark feature and more like an architectural design problem.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Curious how others approach this:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;For workloads where 5–15 minute latency is acceptable, do you prefer triggered incremental processing, or do you still have reasons to keep the pipeline continuously running?&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 20 Aug 2026 16:07:57 GMT</pubDate>
    <dc:creator>kartheek_rao</dc:creator>
    <dc:date>2026-08-20T16:07:57Z</dc:date>
    <item>
      <title>Streaming Doesn't Mean Your Compute Needs to Run Forever</title>
      <link>https://community.databricks.com/t5/data-engineering/streaming-doesn-t-mean-your-compute-needs-to-run-forever/m-p/166077#M55524</link>
      <description>&lt;P class=""&gt;&lt;SPAN&gt;When I first started working with streaming in Databricks, I had a very simple picture in my head:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Streaming = keep the cluster running and process data continuously.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;New data arrives → Spark sees it → process it → repeat forever.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Technically, that can be streaming.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But while building a pipeline around &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;GDELT data flowing through Azure Data Lake into Databricks&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;, I started realizing something much more important:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;The architecture of a streaming system should be driven by how quickly the business needs the data — not by the fact that the source keeps producing data.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;That distinction completely changed the way I started looking at Structured Streaming.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Imagine my source receives a new file every few minutes.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Does the business really need the result within 2 seconds?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Maybe.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Fraud detection probably does.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Real-time personalization might.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Monitoring an industrial system might.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But what if I am processing news articles for NLP analysis?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;If predictions become available 5, 10, or even 15 minutes later, does anything actually break?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Probably not.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;And suddenly keeping compute alive continuously starts looking less like a technical requirement and more like an expensive architectural assumption.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;H3&gt;&lt;SPAN&gt;This is where &lt;/SPAN&gt;&lt;SPAN&gt;AvailableNow&lt;/SPAN&gt;&lt;SPAN&gt; became interesting to me.&lt;/SPAN&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;Instead of thinking:-&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;"My stream must always be running."&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I can think -&amp;gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;"Process everything that has arrived since the previous run, maintain the state of the pipeline, and then stop."&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Databricks Structured Streaming supports exactly this pattern with &lt;/SPAN&gt;&lt;SPAN&gt;Trigger.AvailableNow()&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It processes the available unprocessed data—potentially across multiple micro-batches—and then terminates. The checkpoint allows the next execution to continue from the appropriate position rather than blindly starting everything again.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;That sounds like a small configuration choice.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But architecturally, it is much bigger.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It separates two concepts that I had initially mixed together:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Streaming data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;SPAN&gt;always-on compute.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;They are not necessarily the same thing.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;H3&gt;&lt;SPAN&gt;Then checkpoints started making much more sense.&lt;/SPAN&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;Initially, I looked at a checkpoint directory as just another configuration that Spark required.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Something we add because the documentation says so.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But a checkpoint is really the &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;memory of the streaming application&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It helps the stream remember its progress and state.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Without that memory, restarting a pipeline safely becomes much harder.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;With it, the system can essentially say:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;EM&gt;&lt;SPAN&gt;"I've already dealt with this part of the stream. Let's continue from where we were."&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Databricks explicitly describes the checkpoint as providing the unique identity for a stream while tracking processed records and associated state.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Once I understood that, checkpoints stopped feeling like infrastructure clutter.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;They became part of the reliability architecture.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;H3&gt;&lt;SPAN&gt;Micro-batches gave me another realization.&lt;/SPAN&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;At first, the word "streaming" made me imagine one record travelling through the architecture at a time.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But Spark Structured Streaming often operates differently.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Records arriving during a period are grouped and processed incrementally as &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;micro-batches&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;And that gives us another architectural control point.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;If incoming data suddenly increases, we don't necessarily want one enormous batch consuming everything the source can provide.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Databricks provides controls such as &lt;/SPAN&gt;&lt;SPAN&gt;maxFilesPerTrigger&lt;/SPAN&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;SPAN&gt;maxBytesPerTrigger&lt;/SPAN&gt;&lt;SPAN&gt; for controlling how much Auto Loader processes per micro-batch. This can help keep resource consumption more predictable.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Again, this isn't just Spark configuration.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It is capacity planning.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;HR /&gt;&lt;/DIV&gt;&lt;H3&gt;&lt;SPAN&gt;And this is probably my biggest takeaway.&lt;/SPAN&gt;&lt;/H3&gt;&lt;P class=""&gt;&lt;SPAN&gt;When learning platforms like Databricks, it is easy to spend too much time asking:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;"Which API should I use?"&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But the more useful questions are:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;How fresh does my data actually need to be?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;What happens when my pipeline stops?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;How does it know what has already been processed?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;What happens if 10 files suddenly become 10,000 files?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Am I paying for latency that nobody actually needs?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;These questions lead naturally to concepts such as Auto Loader, checkpoints, trigger strategies, admission controls, observability, and pipeline orchestration.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Auto Loader itself is designed to incrementally discover and process new files arriving in cloud object storage, and Databricks now recommends using it with Lakeflow pipelines for many production incremental-ingestion workloads.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;So today, when I hear:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;EM&gt;&lt;SPAN&gt;"We need streaming."&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;My next question is no longer:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;EM&gt;&lt;SPAN&gt;"Which streaming API should we use?"&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It is:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;"What latency does the business actually need?"&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Because sometimes the best streaming architecture isn't the one processing every second.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;It is the one that knows &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;when to process, what has already been processed, how much to process at once — and when to shut itself down.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;That, for me, was the point where Structured Streaming started feeling less like a Spark feature and more like an architectural design problem.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Curious how others approach this:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;For workloads where 5–15 minute latency is acceptable, do you prefer triggered incremental processing, or do you still have reasons to keep the pipeline continuously running?&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 20 Aug 2026 16:07:57 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/streaming-doesn-t-mean-your-compute-needs-to-run-forever/m-p/166077#M55524</guid>
      <dc:creator>kartheek_rao</dc:creator>
      <dc:date>2026-08-20T16:07:57Z</dc:date>
    </item>
  </channel>
</rss>

