blob: 70bc7c1565da2e8523e35537affe3beab20d53ca [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>pyspark.sql.DataFrame.withWatermark &#8212; PySpark 3.2.4 documentation</title>
<link rel="stylesheet" href="../../_static/css/index.73d71520a4ca3b99cfee5594769eaaae.css">
<link rel="stylesheet"
href="../../_static/vendor/fontawesome/5.13.0/css/all.min.css">
<link rel="preload" as="font" type="font/woff2" crossorigin
href="../../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2">
<link rel="preload" as="font" type="font/woff2" crossorigin
href="../../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2">
<link rel="stylesheet"
href="../../_static/vendor/open-sans_all/1.44.1/index.css">
<link rel="stylesheet"
href="../../_static/vendor/lato_latin-ext/1.44.1/index.css">
<link rel="stylesheet" href="../../_static/basic.css" type="text/css" />
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="../../_static/css/pyspark.css" />
<link rel="preload" as="script" href="../../_static/js/index.3da636dd464baa7582d2.js">
<script id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script src="../../_static/jquery.js"></script>
<script src="../../_static/underscore.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/language_data.js"></script>
<script src="../../_static/copybutton.js"></script>
<script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script>
<script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/x-mathjax-config">MathJax.Hub.Config({"tex2jax": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true, "ignoreClass": "document", "processClass": "math|output_area"}})</script>
<link rel="canonical" href="https://spark.apache.org/docs/latest/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.withWatermark.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="pyspark.sql.DataFrame.write" href="pyspark.sql.DataFrame.write.html" />
<link rel="prev" title="pyspark.sql.DataFrame.withColumnRenamed" href="pyspark.sql.DataFrame.withColumnRenamed.html" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="docsearch:language" content="en" />
</head>
<body data-spy="scroll" data-target="#bd-toc-nav" data-offset="80">
<nav class="navbar navbar-light navbar-expand-lg bg-light fixed-top bd-navbar" id="navbar-main">
<div class="container-xl">
<a class="navbar-brand" href="../../index.html">
<img src="../../_static/spark-logo-reverse.png" class="logo" alt="logo" />
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbar-menu" aria-controls="navbar-menu" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div id="navbar-menu" class="col-lg-9 collapse navbar-collapse">
<ul id="navbar-main-elements" class="navbar-nav mr-auto">
<li class="nav-item ">
<a class="nav-link" href="../../getting_started/index.html">Getting Started</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="../../user_guide/index.html">User Guide</a>
</li>
<li class="nav-item active">
<a class="nav-link" href="../index.html">API Reference</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="../../development/index.html">Development</a>
</li>
<li class="nav-item ">
<a class="nav-link" href="../../migration_guide/index.html">Migration Guide</a>
</li>
</ul>
<ul class="navbar-nav">
</ul>
</div>
</div>
</nav>
<div class="container-xl">
<div class="row">
<div class="col-12 col-md-3 bd-sidebar"><form class="bd-search d-flex align-items-center" action="../../search.html" method="get">
<i class="icon fas fa-search"></i>
<input type="search" class="form-control" name="q" id="search-input" placeholder="Search the docs ..." aria-label="Search the docs ..." autocomplete="off" >
</form>
<nav class="bd-links" id="bd-docs-nav" aria-label="Main navigation">
<div class="bd-toc-item active">
<ul class="nav bd-sidenav">
<li class="active">
<a href="../pyspark.sql.html">Spark SQL</a>
</li>
<li class="">
<a href="../pyspark.pandas/index.html">Pandas API on Spark</a>
</li>
<li class="">
<a href="../pyspark.ss.html">Structured Streaming</a>
</li>
<li class="">
<a href="../pyspark.ml.html">MLlib (DataFrame-based)</a>
</li>
<li class="">
<a href="../pyspark.streaming.html">Spark Streaming</a>
</li>
<li class="">
<a href="../pyspark.mllib.html">MLlib (RDD-based)</a>
</li>
<li class="">
<a href="../pyspark.html">Spark Core</a>
</li>
<li class="">
<a href="../pyspark.resource.html">Resource Management</a>
</li>
</ul>
</nav>
</div>
<div class="d-none d-xl-block col-xl-2 bd-toc">
<nav id="bd-toc-nav">
<ul class="nav section-nav flex-column">
</ul>
</nav>
</div>
<main class="col-12 col-md-9 col-xl-7 py-md-5 pl-md-5 pr-md-4 bd-content" role="main">
<div>
<div class="section" id="pyspark-sql-dataframe-withwatermark">
<h1>pyspark.sql.DataFrame.withWatermark<a class="headerlink" href="#pyspark-sql-dataframe-withwatermark" title="Permalink to this headline"></a></h1>
<dl class="py method">
<dt id="pyspark.sql.DataFrame.withWatermark">
<code class="sig-prename descclassname">DataFrame.</code><code class="sig-name descname">withWatermark</code><span class="sig-paren">(</span><em class="sig-param"><span class="n">eventTime</span></em>, <em class="sig-param"><span class="n">delayThreshold</span></em><span class="sig-paren">)</span><a class="reference internal" href="../../_modules/pyspark/sql/dataframe.html#DataFrame.withWatermark"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#pyspark.sql.DataFrame.withWatermark" title="Permalink to this definition"></a></dt>
<dd><p>Defines an event time watermark for this <a class="reference internal" href="pyspark.sql.DataFrame.html#pyspark.sql.DataFrame" title="pyspark.sql.DataFrame"><code class="xref py py-class docutils literal notranslate"><span class="pre">DataFrame</span></code></a>. A watermark tracks a point
in time before which we assume no more late data is going to arrive.</p>
<dl class="simple">
<dt>Spark will use this watermark for several purposes:</dt><dd><ul class="simple">
<li><p>To know when a given time window aggregation can be finalized and thus can be emitted
when using output modes that do not allow updates.</p></li>
<li><p>To minimize the amount of state that we need to keep for on-going aggregations.</p></li>
</ul>
</dd>
</dl>
<p>The current watermark is computed by looking at the <cite>MAX(eventTime)</cite> seen across
all of the partitions in the query minus a user specified <cite>delayThreshold</cite>. Due to the cost
of coordinating this value across partitions, the actual watermark used is only guaranteed
to be at least <cite>delayThreshold</cite> behind the actual event time. In some cases we may still
process records that arrive more than <cite>delayThreshold</cite> late.</p>
<div class="versionadded">
<p><span class="versionmodified added">New in version 2.1.0.</span></p>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters</dt>
<dd class="field-odd"><dl class="simple">
<dt><strong>eventTime</strong><span class="classifier">str</span></dt><dd><p>the name of the column that contains the event time of the row.</p>
</dd>
<dt><strong>delayThreshold</strong><span class="classifier">str</span></dt><dd><p>the minimum delay to wait to data to arrive late, relative to the
latest record that has been processed in the form of an interval
(e.g. “1 minute” or “5 hours”).</p>
</dd>
</dl>
</dd>
</dl>
<p class="rubric">Notes</p>
<p>This API is evolving.</p>
<div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pyspark.sql.functions</span> <span class="kn">import</span> <span class="n">timestamp_seconds</span>
<span class="gp">&gt;&gt;&gt; </span><span class="n">sdf</span><span class="o">.</span><span class="n">select</span><span class="p">(</span>
<span class="gp">... </span> <span class="s1">&#39;name&#39;</span><span class="p">,</span>
<span class="gp">... </span> <span class="n">timestamp_seconds</span><span class="p">(</span><span class="n">sdf</span><span class="o">.</span><span class="n">time</span><span class="p">)</span><span class="o">.</span><span class="n">alias</span><span class="p">(</span><span class="s1">&#39;time&#39;</span><span class="p">))</span><span class="o">.</span><span class="n">withWatermark</span><span class="p">(</span><span class="s1">&#39;time&#39;</span><span class="p">,</span> <span class="s1">&#39;10 minutes&#39;</span><span class="p">)</span>
<span class="go">DataFrame[name: string, time: timestamp]</span>
</pre></div>
</div>
</dd></dl>
</div>
</div>
<div class='prev-next-bottom'>
<a class='left-prev' id="prev-link" href="pyspark.sql.DataFrame.withColumnRenamed.html" title="previous page">pyspark.sql.DataFrame.withColumnRenamed</a>
<a class='right-next' id="next-link" href="pyspark.sql.DataFrame.write.html" title="next page">pyspark.sql.DataFrame.write</a>
</div>
</main>
</div>
</div>
<script src="../../_static/js/index.3da636dd464baa7582d2.js"></script>
<footer class="footer mt-5 mt-md-0">
<div class="container">
<p>
&copy; Copyright .<br/>
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 3.0.4.<br/>
</p>
</div>
</footer>
</body>
</html>