This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/hop-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new f3e6a5e2d6 Website updated to 45a48e9
f3e6a5e2d6 is described below

commit f3e6a5e2d6235ccf73cfb8cb7d0c3c5c879cd732
Author: jenkins <[email protected]>
AuthorDate: Mon Sep 21 18:37:04 2026 +0000

    Website updated to 45a48e9
---
 manual/next/hop-gui/canvas-mouse.html              |  5 ++-
 manual/next/hop-gui/perspective-configuration.html |  5 +++
 .../pipeline/beam/getting-started-with-beam.html   | 12 +++++-
 manual/next/pipeline/transforms/groupby.html       | 43 +++++++++++++++++-----
 manual/next/pipeline/transforms/memgroupby.html    | 18 +++++++++
 manual/next/pipeline/transforms/sort.html          | 23 ++++++++++++
 .../pipeline/transforms/uniquerowsbyhashset.html   | 21 +++++++++++
 7 files changed, 115 insertions(+), 12 deletions(-)

diff --git a/manual/next/hop-gui/canvas-mouse.html 
b/manual/next/hop-gui/canvas-mouse.html
index b2190b752a..f2efcdcacb 100644
--- a/manual/next/hop-gui/canvas-mouse.html
+++ b/manual/next/hop-gui/canvas-mouse.html
@@ -2771,7 +2771,7 @@
       <div id="preamble">
 <div class="sectionbody">
 <div class="paragraph">
-<p>The pipeline and workflow canvas react to where you click and with which 
button. This page is the reference for all of it. Two options in the <a 
href="perspective-configuration.html" class="xref page">configuration 
perspective</a> (General tab, Canvas section) change the behaviour:</p>
+<p>The pipeline and workflow canvas react to where you click and with which 
button. This page is the reference for all of it. Three options in the <a 
href="perspective-configuration.html" class="xref page">configuration 
perspective</a> (General tab, Canvas section) change the behaviour:</p>
 </div>
 <div class="ulist">
 <ul>
@@ -2781,6 +2781,9 @@
 <li>
 <p><strong>Use right click for the context dialog</strong> — off by default. 
When on, a left click never opens the <a href="hop-gui-popup-dialog.html" 
class="xref page">context dialog</a>; a right click does. Everything else a 
left click does (open properties from a name, press a badge, select, drag) 
stays the same.</p>
 </li>
+<li>
+<p><strong>Use menus instead of the context dialog</strong> — off by default. 
When on, wherever this page says "context dialog" for a transform, action, hop 
or note, a pop-up menu with a submenu per category opens instead. The empty 
canvas keeps the context dialog while the <a 
href="hop-gui-popup-dialog.html#palette-tree" class="xref page">palette 
tree</a> is hidden (that is where you search for transforms and actions to 
add); with the palette shown it gets a menu of the pipeline/workflo [...]
+</li>
 </ul>
 </div>
 <div class="admonitionblock tip">
diff --git a/manual/next/hop-gui/perspective-configuration.html 
b/manual/next/hop-gui/perspective-configuration.html
index ae217d9cdc..9e28b8d5f5 100644
--- a/manual/next/hop-gui/perspective-configuration.html
+++ b/manual/next/hop-gui/perspective-configuration.html
@@ -2939,6 +2939,11 @@ disabled (default): (single) click on a transform or 
action icon to open the con
 <td class="tableblock halign-left valign-top"><p class="tableblock">no</p></td>
 </tr>
 <tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Use menus 
instead of the context dialog</p></td>
+<td class="tableblock halign-left valign-top"><p 
class="tableblock">Transforms, actions, hops and notes show their actions in a 
pop-up menu with a submenu per category instead of the <a 
href="hop-gui-popup-dialog.html" class="xref page">context dialog</a>. A click 
on the empty canvas keeps the context dialog while the <a 
href="hop-gui-popup-dialog.html#palette-tree" class="xref page">palette 
tree</a> is hidden, since that is where new transforms and actions are searched 
for; with the pal [...]
+<td class="tableblock halign-left valign-top"><p class="tableblock">no</p></td>
+</tr>
+<tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Draw 
border around names on canvas?</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">If this 
option is enabled, a border will be drawn around the names of transforms and 
actions on the canvas.</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">no</p></td>
diff --git a/manual/next/pipeline/beam/getting-started-with-beam.html 
b/manual/next/pipeline/beam/getting-started-with-beam.html
index 7ff0c7a700..a0e347dd8f 100644
--- a/manual/next/pipeline/beam/getting-started-with-beam.html
+++ b/manual/next/pipeline/beam/getting-started-with-beam.html
@@ -3053,12 +3053,17 @@ When using the Beam engines it uses 
<code>org.apache.beam.sdk.io.synthetic.Synth
 <div class="sect2">
 <h3 id="_unsupported_transforms"><a class="link" 
href="#_unsupported_transforms">Unsupported transforms</a></h3>
 <div class="paragraph">
-<p>A few transforms are simply not supported because we haven&#8217;t found a 
good way to do this on Beam yet:</p>
+<p>A few transforms are simply not supported because we haven&#8217;t found a 
good way to do this on Beam yet.
+They all depend on seeing the rows in a particular order, or on holding state 
for the whole data set in one place, and a Beam pipeline re-shuffles rows 
across workers to maximize parallelism.
+Each of these transforms would therefore only ever see the slice of the data 
one worker happens to hold, and would quietly produce a wrong result, so the 
Beam engines refuse them with an error instead:</p>
 </div>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="../transforms/uniquerows.html" class="xref page">Unique 
Rows</a></p>
+<p><a href="../transforms/uniquerows.html" class="xref page">Unique Rows</a> : 
Use the <code>Memory Group By</code> instead</p>
+</li>
+<li>
+<p><a href="../transforms/uniquerowsbyhashset.html" class="xref page">Unique 
Rows (HashSet)</a> : Use the <code>Memory Group By</code> instead</p>
 </li>
 <li>
 <p><a href="../transforms/groupby.html" class="xref page">Group By</a> : Use 
the <code>Memory Group By</code> instead</p>
@@ -3069,6 +3074,9 @@ When using the Beam engines it uses 
<code>org.apache.beam.sdk.io.synthetic.Synth
 </ul>
 </div>
 <div class="paragraph">
+<p>The Hop GUI knows about this list: when you set the canvas palette filter 
to a Beam engine these transforms are hidden, and running a pipeline that still 
contains one is blocked with the reason shown above.</p>
+</div>
+<div class="paragraph">
 <p>The <a href="../transforms/rowdenormaliser.html" class="xref 
page">Denormaliser</a> transform works technically correct on Apache Beam in 
release 1.1.0 and later.
 Even so you need to consider that the aggregation of the key-value pairs in 
that transform (in the general case) only happens on a sub-set of the rows.
 That is because in a Beam pipeline the order in which rows arrive is lost 
because they are continuously re-shuffled to maximize parallelism.
diff --git a/manual/next/pipeline/transforms/groupby.html 
b/manual/next/pipeline/transforms/groupby.html
index 0a1160a4a5..94def79fd0 100644
--- a/manual/next/pipeline/transforms/groupby.html
+++ b/manual/next/pipeline/transforms/groupby.html
@@ -2798,35 +2798,35 @@
     Native Spark
     <span class="visually-hidden">not supported</span>
   </li>
-  <li class="engine engine--supported" data-engine="beam-spark">
+  <li class="engine engine--unsupported" data-engine="beam-spark">
     <svg class="engine__mark" width="12" height="12" viewBox="0 0 12 12" 
aria-hidden="true" focusable="false">
       
-      <path d="M2 6.4 4.6 9 10 3.2" fill="none" stroke="currentColor" 
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
       
+      <path d="M3 3l6 6M9 3l-6 6" fill="none" stroke="currentColor" 
stroke-width="1.8" stroke-linecap="round"/>
       
     </svg>
     Beam Spark
-    <span class="visually-hidden">supported</span>
+    <span class="visually-hidden">not supported</span>
   </li>
-  <li class="engine engine--supported" data-engine="beam-flink">
+  <li class="engine engine--unsupported" data-engine="beam-flink">
     <svg class="engine__mark" width="12" height="12" viewBox="0 0 12 12" 
aria-hidden="true" focusable="false">
       
-      <path d="M2 6.4 4.6 9 10 3.2" fill="none" stroke="currentColor" 
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
       
+      <path d="M3 3l6 6M9 3l-6 6" fill="none" stroke="currentColor" 
stroke-width="1.8" stroke-linecap="round"/>
       
     </svg>
     Beam Flink
-    <span class="visually-hidden">supported</span>
+    <span class="visually-hidden">not supported</span>
   </li>
-  <li class="engine engine--supported" data-engine="beam-dataflow">
+  <li class="engine engine--unsupported" data-engine="beam-dataflow">
     <svg class="engine__mark" width="12" height="12" viewBox="0 0 12 12" 
aria-hidden="true" focusable="false">
       
-      <path d="M2 6.4 4.6 9 10 3.2" fill="none" stroke="currentColor" 
stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
       
+      <path d="M3 3l6 6M9 3l-6 6" fill="none" stroke="currentColor" 
stroke-width="1.8" stroke-linecap="round"/>
       
     </svg>
     Beam Dataflow
-    <span class="visually-hidden">supported</span>
+    <span class="visually-hidden">not supported</span>
   </li>
 </ul>
     <article class="doc">
@@ -2855,6 +2855,31 @@
 <div class="paragraph">
 <p>You can use the <a href="memgroupby.html" class="xref page">Memory Group 
By</a> transform to handle non-sorted input.</p>
 </div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Group By does not run on the distributed pipeline engines.
+Both the Beam engines and the native Spark engine refuse the transform and 
stop the pipeline with an error.</p>
+</div>
+<div class="paragraph">
+<p>The reason is the sorted input this transform relies on.
+A distributed engine spreads the rows over many workers and re-shuffles them 
to maximize parallelism, so a sort upstream only ever orders the rows one 
worker happens to hold.
+The groups would be formed per worker and the aggregates would be silently 
wrong.</p>
+</div>
+<div class="paragraph">
+<p>Use <a href="memgroupby.html" class="xref page">Memory Group By</a> instead.
+It needs no sorted input, and both engines map it onto their own shuffle 
(<code>GroupByKey</code> on Beam) so the grouping covers the whole data set.
+See <a href="../beam/getting-started-with-beam.html#_unsupported_transforms" 
class="xref page">Getting started with Beam</a> for the other transforms in 
this situation.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 <div class="sect1">
diff --git a/manual/next/pipeline/transforms/memgroupby.html 
b/manual/next/pipeline/transforms/memgroupby.html
index c971e9d119..4d8e0c94ba 100644
--- a/manual/next/pipeline/transforms/memgroupby.html
+++ b/manual/next/pipeline/transforms/memgroupby.html
@@ -2853,6 +2853,24 @@ When the number of rows is too large to fit into memory, 
use a combination of <a
 </tr>
 </table>
 </div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>That fallback to <a href="sort.html" class="xref page">Sort Rows</a> and <a 
href="groupby.html" class="xref page">Group By</a> only applies to the Hop 
engines.
+Neither of those transforms runs on the Beam engines or on the native Spark 
engine.</p>
+</div>
+<div class="paragraph">
+<p>On those engines Memory Group By is the aggregation to reach for: it is 
translated into the engine&#8217;s own grouping operation 
(<code>org.apache.beam.sdk.transforms.GroupByKey</code> on Beam, a Spark 
shuffle on native Spark) rather than run as a Hop transform per worker, so 
neither the sorting nor the memory limit described above applies.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 <div class="sect1">
diff --git a/manual/next/pipeline/transforms/sort.html 
b/manual/next/pipeline/transforms/sort.html
index 51de0d80bd..3c99f1ae14 100644
--- a/manual/next/pipeline/transforms/sort.html
+++ b/manual/next/pipeline/transforms/sort.html
@@ -2852,6 +2852,29 @@ You use can use multiple copies of the Sort Rows 
transform to speed up large sor
 </tr>
 </table>
 </div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>Sort Rows is not supported on the Beam engines.
+A Beam pipeline spreads rows over many workers and re-shuffles them to 
maximize parallelism, so this transform can only order the rows a single worker 
happens to hold at that moment, never the data set as a whole.</p>
+</div>
+<div class="paragraph">
+<p>If you need sorted input for a downstream transform, that transform will 
not work on Beam either.
+Use an alternative that does not depend on row order, such as <a 
href="memgroupby.html" class="xref page">Memory Group By</a> in place of <a 
href="groupby.html" class="xref page">Group By</a>.
+See <a href="../beam/getting-started-with-beam.html#_unsupported_transforms" 
class="xref page">Getting started with Beam</a>.</p>
+</div>
+<div class="paragraph">
+<p>The native Spark engine does support this transform: it is mapped onto a 
Spark sort across the full data set instead of being run per partition.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 <div class="sect1">
diff --git a/manual/next/pipeline/transforms/uniquerowsbyhashset.html 
b/manual/next/pipeline/transforms/uniquerowsbyhashset.html
index 31b1d94a0f..a13bab7c7a 100644
--- a/manual/next/pipeline/transforms/uniquerowsbyhashset.html
+++ b/manual/next/pipeline/transforms/uniquerowsbyhashset.html
@@ -2852,6 +2852,27 @@ When using this transform on larger sets of data there 
is a risk of hash collisi
 </tr>
 </table>
 </div>
+<div class="admonitionblock warning">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-warning" title="Warning"></i>
+</td>
+<td class="content">
+<div class="paragraph">
+<p>This transform is not supported on the distributed pipeline engines: 
neither the Beam engines nor the native Spark engine.
+The hash set it uses to spot duplicates lives in the memory of a single 
worker, and these engines spread the rows over many workers, so duplicates that 
end up on different workers would survive.
+Both refuse the transform with an error rather than hand you that incomplete 
result.</p>
+</div>
+<div class="paragraph">
+<p>Use a <a href="memgroupby.html" class="xref page">Memory Group By</a> to 
get distinct rows instead: it is translated into the engine&#8217;s own 
grouping operation and covers the whole data set.
+On the native Spark engine <a href="uniquerows.html" class="xref page">Unique 
Rows</a> is an option too, because that engine maps it onto its own distinct 
operation; on the Beam engines it is not, as it is refused there as well.
+See <a href="../beam/getting-started-with-beam.html#_unsupported_transforms" 
class="xref page">Getting started with Beam</a>.</p>
+</div>
+</td>
+</tr>
+</table>
+</div>
 </div>
 </div>
 <div class="sect1">

Reply via email to