<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Trino - Category - 爱吃芒果</title><link>https://shadowundermoon.github.io/categories/trino/</link><description>Trino - Category - 爱吃芒果</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Sun, 25 Jan 2026 21:37:20 +0800</lastBuildDate><atom:link href="https://shadowundermoon.github.io/categories/trino/" rel="self" type="application/rss+xml"/><item><title>Presto任务执行流程</title><link>https://shadowundermoon.github.io/posts/presto-task-execution/</link><pubDate>Sun, 25 Jan 2026 21:37:20 +0800</pubDate><author>爱吃芒果</author><guid>https://shadowundermoon.github.io/posts/presto-task-execution/</guid><description><![CDATA[<div class="code-block code-line-numbers" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">// TaskResouce /v1/task/{taskId}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="kd">public</span><span class="w"> </span><span class="n">Response</span><span class="w"> </span><span class="nf">createOrUpdateTask</span><span class="p">(</span><span class="nd">@PathParam</span><span class="p">(</span><span class="s">&#34;taskId&#34;</span><span class="p">)</span><span class="w"> </span><span class="n">TaskId</span><span class="w"> </span><span class="n">taskId</span><span class="p">,</span><span class="w"> </span><span class="n">TaskUpdateRequest</span><span class="w"> </span><span class="n">taskUpdateRequest</span><span class="p">,</span><span class="w"> </span><span class="nd">@Context</span><span class="w"> </span><span class="n">UriInfo</span><span class="w"> </span><span class="n">uriInfo</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">requireNonNull</span><span class="p">(</span><span class="n">taskUpdateRequest</span><span class="p">,</span><span class="w"> </span><span class="s">&#34;taskUpdateRequest is null&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">Session</span><span class="w"> </span><span class="n">session</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">taskUpdateRequest</span><span class="p">.</span><span class="na">getSession</span><span class="p">().</span><span class="na">toSession</span><span class="p">(</span><span class="n">sessionPropertyManager</span><span class="p">,</span><span class="w"> </span><span class="n">taskUpdateRequest</span><span class="p">.</span><span class="na">getExtraCredentials</span><span class="p">());</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">TaskInfo</span><span class="w"> </span><span class="n">taskInfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">taskManager</span><span class="p">.</span><span class="na">updateTask</span><span class="p">(</span><span class="n">session</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">taskId</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">taskUpdateRequest</span><span class="p">.</span><span class="na">getFragment</span><span class="p">(),</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">taskUpdateRequest</span><span class="p">.</span><span class="na">getSources</span><span class="p">(),</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">taskUpdateRequest</span><span class="p">.</span><span class="na">getOutputIds</span><span class="p">(),</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">            </span><span class="n">taskUpdateRequest</span><span class="p">.</span><span class="na">getTotalPartitions</span><span class="p">());</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">shouldSummarize</span><span class="p">(</span><span class="n">uriInfo</span><span class="p">))</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">taskInfo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">taskInfo</span><span class="p">.</span><span class="na">summarize</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="n">Response</span><span class="p">.</span><span class="na">ok</span><span class="p">().</span><span class="na">entity</span><span class="p">(</span><span class="n">taskInfo</span><span class="p">).</span><span class="na">build</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span></span></span></code></pre></div></div>]]></description></item><item><title>Presto客户端和服务区交互流程</title><link>https://shadowundermoon.github.io/posts/presto-client-server-interaction/</link><pubDate>Sun, 25 Jan 2026 21:34:59 +0800</pubDate><author>爱吃芒果</author><guid>https://shadowundermoon.github.io/posts/presto-client-server-interaction/</guid><description><![CDATA[<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="Copy to clipboard"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">StatementClientV1</span><span class="p">.</span><span class="na">advance</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nl">ExecutingStatementResource</span><span class="p">::</span><span class="n">getQueryResult</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nl">Query</span><span class="p">::</span><span class="n">getNextResult</span></span></span></code></pre></div></div>]]></description></item><item><title>Presto查询计划生成和优化</title><link>https://shadowundermoon.github.io/posts/presto-query-plan/</link><pubDate>Sat, 24 Jan 2026 19:35:06 +0800</pubDate><author>爱吃芒果</author><guid>https://shadowundermoon.github.io/posts/presto-query-plan/</guid><description>&lt;p>在&lt;code>SqlQueryExecution.doPlanQuery&lt;/code>中，从原来的抽象语法树生成逻辑执行计划，然后优化执行计划，生成优化后的执行计划，最后将逻辑执行计划切分成多颗子树。&lt;/p></description></item><item><title>Presto环境搭建</title><link>https://shadowundermoon.github.io/posts/presto-environment-setup/</link><pubDate>Sat, 17 Jan 2026 15:11:35 +0800</pubDate><author>爱吃芒果</author><guid>https://shadowundermoon.github.io/posts/presto-environment-setup/</guid><description>&lt;h2 id="前言">前言&lt;/h2>
&lt;p>Trino是从Presto分离出来的项目，在后面的文章中不会严格区分Presto和Trino，除非某些代码只在其中一个项目中存在，根据《OLAP引擎底层原理与设计实践》的推荐，后面基本会通过trino项目的v350版本为例分析presto的一些源码级的实现，希望能够比较系统地理解OLAP引擎的整体实现。&lt;/p></description></item><item><title>Presto worker高负载查杀任务</title><link>https://shadowundermoon.github.io/posts/presto-high-memory-task-killer/</link><pubDate>Wed, 14 Jan 2026 16:26:01 +0800</pubDate><author>爱吃芒果</author><guid>https://shadowundermoon.github.io/posts/presto-high-memory-task-killer/</guid><description>&lt;p>为了尽量避免worker发生OOM从而短暂不可用，Presto提供了在内存高负载下查杀任务的机制，代码很简单，在&lt;code>com.facebook.presto.memory.HighMemoryTaskKiller&lt;/code>中。&lt;/p></description></item></channel></rss>