<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Saurabh Mahawar</title>
    <description>The latest articles on DEV Community by Saurabh Mahawar (@saurabhmahawar).</description>
    <link>https://dev.to/saurabhmahawar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3088830%2Ff9bc8cf0-d6ff-47f1-ae2c-9c7eeef3fdc2.png</url>
      <title>DEV Community: Saurabh Mahawar</title>
      <link>https://dev.to/saurabhmahawar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saurabhmahawar"/>
    <language>en</language>
    <item>
      <title>How to Build Presto from Source - OSS Contribution Guide (Step by Step Tutorial)</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Wed, 14 Jan 2026 10:10:00 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/how-to-build-presto-from-source-oss-contribution-guide-step-by-step-tutorial-460j</link>
      <guid>https://dev.to/saurabhmahawar/how-to-build-presto-from-source-oss-contribution-guide-step-by-step-tutorial-460j</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpv122ixap2a0kwr84tu1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpv122ixap2a0kwr84tu1.png" alt="PrestoDB logo" width="459" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This step-by-step tutorial is designed specifically for beginners and first-time contributors who want to build Presto from source, run the Presto server locally, understand the codebase, and successfully submit their first pull request. By the end of this guide, you will have a fully working local Presto setup and a clear understanding of the complete contribution workflow, from Git setup to PR merge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operating System&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;macOS or Linux (Windows via WSL2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Java 17 (64-bit) - OpenJDK or Oracle JDK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Python&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Python 2.4+ (for launcher scripts), Not Required for Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Git&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Latest version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RAM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Minimum 8GB (16GB recommended)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Disk Space&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;At least 10GB free&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Tip&lt;/strong&gt;]&lt;br&gt;
&lt;strong&gt;IntelliJ IDEA&lt;/strong&gt; is recommended for Presto development.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Knowledge Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Java Programming Knowledge.&lt;/li&gt;
&lt;li&gt;Familiarity with command-line tools
&lt;/li&gt;
&lt;li&gt;Git &amp;amp; Version Control Basics.&lt;/li&gt;
&lt;li&gt;Maven Build Tool.&lt;/li&gt;
&lt;li&gt;SQL &amp;amp; Distributed Systems knowledge (helpful but not required).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Required Accounts
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;GitHub Account&lt;/li&gt;
&lt;li&gt;Slack Account (To Join Presto Slack &lt;a href="https://communityinviter.com/apps/prestodb/prestodb" rel="noopener noreferrer"&gt;&lt;code&gt;Community&lt;/code&gt;&lt;/a&gt;, ask in &lt;strong&gt;#general&lt;/strong&gt; or &lt;strong&gt;#dev&lt;/strong&gt; for any help)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Configuring Git
&lt;/h3&gt;

&lt;p&gt;If you are a macOS user, use the pre-installed &lt;strong&gt;Git&lt;/strong&gt; . But, if you are using Linux or Windows, download the latest version of Git from &lt;a href="https://git-scm.com/install/mac" rel="noopener noreferrer"&gt;&lt;code&gt;here&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Open the terminal and run the below command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Configure Git with your name and email.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set your name
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.name "Your Name"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Set your email
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.email "example@gmail.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Installing Java Development Kit (JDK)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Download and Install Java 17 (either OpenJDK or Oracle JDK).&lt;/li&gt;
&lt;li&gt;Download &lt;strong&gt;.dmg&lt;/strong&gt; file (if you are on macOS), download &lt;a href="https://www.azul.com/downloads/?version=java-17-lts&amp;amp;os=macos&amp;amp;package=jdk#zulu" rel="noopener noreferrer"&gt;&lt;code&gt;link&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;JAVA_HOME&lt;/strong&gt; (add to ~/.zshrc or ~/.bash_profile).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verify JDK Installation&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java -version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Forking and Cloning the Repository
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Forking The Repository
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the &lt;a href="https://github.com/prestodb/presto" rel="noopener noreferrer"&gt;&lt;code&gt;Presto GitHub repository&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;"Fork"&lt;/strong&gt; button in the top-right corner&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a copy of the Presto repository under your GitHub account. &lt;/p&gt;
&lt;h5&gt;
  
  
  Cloning Your Forked Repository
&lt;/h5&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to the directory where you want to store the project on your local machine.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ~/ Desktop (or your preferred Directory)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Clone the project
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/YOUR_USERNAME/presto.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Navigate to the directory
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ~/ presto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Verify the cloned repository.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ls -la
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Understanding the Presto Project Structure (Codebase)
&lt;/h3&gt;

&lt;p&gt;Understand the key modules in the Presto codebase:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;presto/
├── .github/              # GitHub workflows and templates
├── docker/               # Docker configurations
├── presto-accumulo/      # Accumulo connector
├── presto-analyzer/      # Semantic analysis and query validation
├── presto-base-jdbc/     # Base JDBC connector
├── presto-cli/           # Command-line interface
├── presto-client/        # Client libraries
├── presto-common/        # Common utilities
├── presto-docs/          # Documentation (Sphinx/RST)
├── presto-hive/          # Hive connector
├── presto-main/          # Core engine
├── presto-parser/        # SQL parser
├── presto-server/        # Server packaging
├── presto-spi/           # Service Provider Interface
├── presto-tests/         # Integration tests
├── pom.xml               # Root Maven configuration
├── CONTRIBUTING.md       # Contribution guidelines
└── README.md             # Project overview
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/prestodb/presto/blob/master/README.md" rel="noopener noreferrer"&gt;&lt;code&gt;README.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Project overview and build instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/prestodb/presto/blob/master/CONTRIBUTING.md" rel="noopener noreferrer"&gt;&lt;code&gt;CONTRIBUTING.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Contribution guidelines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/prestodb/presto/blob/master/ARCHITECTURE.md" rel="noopener noreferrer"&gt;&lt;code&gt;ARCHITECTURE.md&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Mission and technical architecture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/prestodb/presto/blob/master/pom.xml" rel="noopener noreferrer"&gt;&lt;code&gt;pom.xml&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Maven project configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/prestodb/presto/blob/master/CODEOWNERS" rel="noopener noreferrer"&gt;&lt;code&gt;CODEOWNERS&lt;/code&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Code ownership and module maintainers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Info&lt;/strong&gt;]&lt;br&gt;
Note that each module has its own &lt;code&gt;pom.xml&lt;/code&gt; and follows Maven’s standard directory structure.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Setting Up IntelliJ IDEA for Presto
&lt;/h3&gt;
&lt;h4&gt;
  
  
  1. Configure Maven:
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to IntelliJ IDEA → Settings → Build, Execution, Deployment → Build Tools → Maven → Use Maven wrapper&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Maven → Runner → Enable &lt;strong&gt;Skip Tests&lt;/strong&gt; → Click Apply → OK&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;
  
  
  2. Configure JDK
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to File → Project Structure → Project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set SDK to Java 17 (or download directly)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Run → Edit Configurations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set &lt;strong&gt;Java 17&lt;/strong&gt; as SDK and &lt;strong&gt;presto-main&lt;/strong&gt; as class path.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add below configurations in &lt;strong&gt;VM Options&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-ea  
-XX:+UseG1GC  
-XX:G1HeapRegionSize=32M  
-XX:+UseGCOverheadLimit  
-XX:+ExplicitGCInvokesConcurrent  
-Xmx2G  
-Dconfig=/Users/your-complete-path/presto/presto-main/etc/config.properties  
-Dlog.levels-file=etc/log.properties  
-Djdk.attach.allowAttachSelf=true   
--add-opens=java.base/java.io=ALL-UNNAMED  
--add-opens=java.base/java.lang=ALL-UNNAMED  
--add-opens=java.base/java.lang.ref=ALL-UNNAMED  
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED  
--add-opens=java.base/java.net=ALL-UNNAMED  
--add-opens=java.base/java.nio=ALL-UNNAMED  
--add-opens=java.base/java.security=ALL-UNNAMED  
--add-opens=java.base/javax.security.auth=ALL-UNNAMED  
--add-opens=java.base/javax.security.auth.login=ALL-UNNAMED  
--add-opens=java.base/java.text=ALL-UNNAMED  
--add-opens=java.base/java.util=ALL-UNNAMED  
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED  
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED  
--add-opens=java.base/java.util.regex=ALL-UNNAMED  
--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED  
--add-opens=java.base/sun.security.action=ALL-UNNAMED  
--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Set Main Class to &lt;code&gt;com.facebook.presto.server.PrestoServer&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set Working Directory &lt;code&gt;$MODULE_DIR$&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Modify Options and check the options&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fky31jaugyekowyxqy8n5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fky31jaugyekowyxqy8n5.png" alt="Add Run Options" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Apply to save the configuration. IntelliJ is now set up and ready for Presto development.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Building Presto from Source
&lt;/h3&gt;

&lt;p&gt;Build Presto from source to verify your environment and test your changes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the directory where presto is cloned.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ~/Desktop/presto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Run the following command to build Presto for the first time.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;./mvnw clean install -DskipTests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Info&lt;/strong&gt;]&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;mvnw&lt;/strong&gt;: Runs Maven Wrapper&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;clean&lt;/strong&gt;: Removes previous build artifacts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;install&lt;/strong&gt;: Compiles code, packages it, and installs to local Maven repository&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DskipTests&lt;/strong&gt;: Skips running tests (faster for initial build)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;[&lt;strong&gt;Important&lt;/strong&gt;]&lt;br&gt;
Skipping tests is acceptable &lt;strong&gt;only for initial setup or local exploration&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;All PRs must pass tests&lt;/strong&gt; and should be built &lt;strong&gt;without &lt;code&gt;-DskipTests&lt;/code&gt;&lt;/strong&gt; before submission.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4dug0xd32sa5rulw330.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4dug0xd32sa5rulw330.png" alt="Build Success Logs" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Verify the setup and run the Presto server directly from IntelliJ.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm that the Presto server is running on &lt;code&gt;localhost:8080&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Success&lt;/strong&gt;]&lt;br&gt;
Server is running on &lt;strong&gt;localhost:8080&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  Connect with Presto CLI
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Open a new terminal, navigate to the &lt;strong&gt;presto-cli&lt;/strong&gt; directory, and then move into the &lt;strong&gt;target&lt;/strong&gt; directory. Run below command.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd presto-cli/target
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;java -jar presto-cli-*-SNAPSHOT-executable.jar \
  --server localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Verify that the presto prompt appears.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;presto&amp;gt; show catalogs;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Success&lt;/strong&gt;]&lt;br&gt;
Connected with Presto CLI&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;
  
  
  Build Specific Modules
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;To build only a specific module, run the below command:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd presto-cli
./mvnw clean install -DskipTests
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Setting Up Upstream Remote
&lt;/h3&gt;

&lt;p&gt;Keep your fork synchronized with the main Presto repository.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the upstream remote
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote add upstream https://github.com/prestodb/presto.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Verify your remote
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;origin&lt;/strong&gt;: Your fork on GitHub (where you push changes)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;upstream&lt;/strong&gt;: The main Presto repository (where you pull updates)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;NOTE&lt;/strong&gt;]&lt;br&gt;
Do not commit changes directly to &lt;code&gt;master&lt;/code&gt;. Always create a feature branch.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Making Code Contributions
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Syncing Your Fork
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Before creating a new branch, ensure your fork is up to date:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#Make sure you're on master
git checkout master 

#Fetch updates from upstream
git fetch upstream 

#Merge upstream changes into your master
git merge upstream/master 

#Push updates to your fork
git push origin master 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Tip&lt;/strong&gt;]&lt;br&gt;
Sync your fork regularly to avoid merge conflicts.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;
  
  
  Find an Issue to Fix
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Visit the &lt;a href="https://github.com/prestodb/presto/issues" rel="noopener noreferrer"&gt;&lt;code&gt;Presto Issues Page&lt;/code&gt;&lt;/a&gt;, or&lt;/li&gt;
&lt;li&gt;Look for issues that interest you, or&lt;/li&gt;
&lt;li&gt;Find an Issue to fix with labels like &lt;code&gt;good first issues&lt;/code&gt;, &lt;code&gt;documentation&lt;/code&gt;, etc&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Important&lt;/strong&gt;]&lt;br&gt;
Comment on the issue to let others know you're working on it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;
  
  
  Creating a Feature Branch
&lt;/h5&gt;

&lt;ul&gt;
&lt;li&gt;Create and switch to a new branch, use descriptive branch names that indicate what you're working on:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout -b feature/meaningful-branch-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Example&lt;/strong&gt;]&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;feature/add-trim-function&lt;/li&gt;
&lt;li&gt;bugfix/fix-null-pointer-in-parser&lt;/li&gt;
&lt;li&gt;docs/update-contribution-guide&lt;/li&gt;
&lt;li&gt;refactor/simplify-planner-logic&lt;/li&gt;
&lt;li&gt;test/add-hive-connector-tests&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Verify that you are on the new branch.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Make Your Changes in the Code&lt;/li&gt;
&lt;li&gt;Write or Update Tests&lt;/li&gt;
&lt;li&gt;Run Tests Locally
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Run tests for the module you changed
cd presto-main
../mvnw test

# If all pass, run full build
cd ..
./mvnw clean install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Commit your changes
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Stage your changes
git add .

# Commit with proper format
git commit -m "Your Message"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Write clear and descriptive commit messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Example&lt;/strong&gt;]&lt;br&gt;
&lt;strong&gt;Commit Message Format:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;type&amp;gt; [(scope)]: &amp;lt;subject&amp;gt;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[optional body]&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[optional footer]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;feat: New feature&lt;/li&gt;
&lt;li&gt;fix: Bug fix&lt;/li&gt;
&lt;li&gt;docs: Documentation only&lt;/li&gt;
&lt;li&gt;refactor: Code refactoring&lt;/li&gt;
&lt;li&gt;perf: Performance improvement&lt;/li&gt;
&lt;li&gt;test: Adding or modifying tests&lt;/li&gt;
&lt;li&gt;build: Build system changes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;[&lt;strong&gt;ToDo&lt;/strong&gt;]&lt;br&gt;
&lt;strong&gt;Subject Line Rules&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with capital letter&lt;/li&gt;
&lt;li&gt;Use imperative mood ("Add feature" not "Added feature")&lt;/li&gt;
&lt;li&gt;No period at the end&lt;/li&gt;
&lt;li&gt;Be concise but descriptive&lt;/li&gt;
&lt;li&gt;Limit to 50-72 characters when possible&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;[&lt;strong&gt;Example&lt;/strong&gt;]&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;git commit -m "feat(function): Add trim function with custom characters"&lt;/li&gt;
&lt;li&gt;git commit -m "fix(parser): Handle null values in WHERE clause"&lt;/li&gt;
&lt;li&gt;git commit -m "docs(connector): Update Hive connector configuration guide"&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Push to your Fork
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push origin feature/meaningful-branch-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Create a &lt;strong&gt;Pull Request (PR)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Go to your fork on GitHub: &lt;code&gt;https://github.com/YOUR_USERNAME/presto&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"Compare &amp;amp; pull request"&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Set: &lt;strong&gt;Base repo&lt;/strong&gt;: &lt;code&gt;prestodb/presto&lt;/code&gt;, &lt;strong&gt;Base branch&lt;/strong&gt;: &lt;code&gt;master&lt;/code&gt;, &lt;strong&gt;Head repo&lt;/strong&gt;: your fork, &lt;strong&gt;Compare branch&lt;/strong&gt;: &lt;code&gt;your feature branch&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Fill out PR Template.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Sign the CLA&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Important&lt;/strong&gt;]&lt;br&gt;
On your first PR, the &lt;strong&gt;CLA bot&lt;/strong&gt; will comment asking you to sign the Contributor License Agreement:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the link provided by the bot&lt;/li&gt;
&lt;li&gt;Sign the CLA electronically&lt;/li&gt;
&lt;li&gt;The bot will update your PR status&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;[&lt;strong&gt;Success&lt;/strong&gt;]&lt;br&gt;
You have successfully contributed to Presto Open Source&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  After Your PR is Merged
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;&lt;u&gt;Congratulations! You are now a contributor to the Presto project.&lt;br&gt;
&lt;/u&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;[&lt;strong&gt;Important Links&lt;/strong&gt;]&lt;br&gt;
Presto Website: &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;&lt;code&gt;https://prestodb.io&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
Join Slack: &lt;a href="https://communityinviter.com/apps/prestodb/prestodb" rel="noopener noreferrer"&gt;&lt;code&gt;https://communityinviter.com/apps/prestodb/prestodb&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prestodb" rel="noopener noreferrer"&gt;
        prestodb
      &lt;/a&gt; / &lt;a href="https://github.com/prestodb/presto" rel="noopener noreferrer"&gt;
        presto
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The official home of the Presto distributed SQL query engine for big data
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Presto&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://insights.linuxfoundation.org/project/presto" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ca6f2fd499b440351b68c228fd47e0331a18514dff81408948968093d3310268/68747470733a2f2f696e7369676874732e6c696e7578666f756e646174696f6e2e6f72672f6170692f62616467652f6865616c74682d73636f72653f70726f6a6563743d70726573746f" alt="LFX Health Score"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Presto is a distributed SQL query engine for big data.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://prestodb.io/docs/current/installation.html" rel="nofollow noopener noreferrer"&gt;Presto installation documentation&lt;/a&gt; for deployment instructions.&lt;/p&gt;

&lt;p&gt;See the &lt;a href="https://prestodb.io/docs/current/" rel="nofollow noopener noreferrer"&gt;Presto documentation&lt;/a&gt; for general documentation.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Mission and Architecture&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;See &lt;a href="https://github.com/prestodb/presto/ARCHITECTURE.md" rel="noopener noreferrer"&gt;PrestoDB: Mission and Architecture&lt;/a&gt;.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Requirements&lt;/h2&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Mac OS X or Linux&lt;/li&gt;
&lt;li&gt;Java 17 64-bit. Both Oracle JDK and OpenJDK are supported.&lt;/li&gt;
&lt;li&gt;Maven 3.6.3+ (for building)&lt;/li&gt;
&lt;li&gt;Python 2.4+ (for running with the launcher script)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;br&gt;
  &lt;div class="markdown-heading"&gt;
&lt;br&gt;
&lt;a href=""&gt;&lt;h2 class="heading-element"&gt;Building Presto&lt;/h2&gt;&lt;/a&gt;&lt;br&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Overview (Java)&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Presto is a standard Maven project. Simply run the following command from the project root directory:&lt;/p&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;./mvnw clean install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;On the first build, Maven will download all the dependencies from the internet and cache them in the local repository (&lt;code&gt;~/.m2/repository&lt;/code&gt;), which can take a considerable amount of time. Subsequent builds will be faster.&lt;/p&gt;
&lt;p&gt;When building multiple Presto projects locally, each project may write updates to the user's global M2 cache, which could cause build issues. You can configure your local &lt;code&gt;.mvn/maven.config&lt;/code&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prestodb/presto" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
      <category>opensource</category>
      <category>presto</category>
      <category>dataengineering</category>
      <category>dataanalytics</category>
    </item>
    <item>
      <title>Get Started with Fastest SQL Query Engine - Presto C++ (Prestissimo): Beginner Friendly Setup Guide with Docker.</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Mon, 29 Sep 2025 16:48:29 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/get-started-with-fastest-sql-query-engine-presto-c-prestissimo-beginner-friendly-setup-guide-32gk</link>
      <guid>https://dev.to/saurabhmahawar/get-started-with-fastest-sql-query-engine-presto-c-prestissimo-beginner-friendly-setup-guide-32gk</guid>
      <description>&lt;p&gt;This step-by-step tutorial shows you how to install and run a &lt;strong&gt;PrestoDB Java Coordinator&lt;/strong&gt; with a &lt;strong&gt;Prestissimo (C++) Worker&lt;/strong&gt; using Docker. This setup uses Meta's high-performance &lt;a href="https://velox-lib.io/" rel="noopener noreferrer"&gt;Velox&lt;/a&gt; engine for worker-side query execution.&lt;/p&gt;

&lt;p&gt;We'll create a lightweight Presto cluster, run a test query with the built-in TPCH connector.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introducing Prestissimo (Presto C++ Worker)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Prestissimo is the C++ native implementation of the Presto Worker&lt;/strong&gt;, designed as a &lt;strong&gt;drop-in replacement&lt;/strong&gt; for the traditional Java worker. It is built using &lt;strong&gt;Velox&lt;/strong&gt;, a high-performance open-source C++ database acceleration library created by Meta.&lt;/p&gt;

&lt;p&gt;The shift to a C++ execution engine is a major performance innovation for Presto, offering several significant advantages for data lake analytics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Massive Performance Boost&lt;/strong&gt;: Prestissimo leverages native C++ execution, vectorization, and SIMD (Single Instruction, Multiple Data) instructions, which can dramatically increase CPU efficiency and reduce query latency, with production results showing fleet sizes shrinking to nearly a third.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Eliminates Java GC Issues&lt;/strong&gt;: By moving the execution engine out of the JVM, it removes the unpredictable performance spikes and pauses associated with Java Garbage Collection (GC), leading to more consistent and stable query times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explicit Memory Control&lt;/strong&gt;: The Velox memory management framework provides explicit memory accounting and arbitration, offering finer control over resource consumption than the JVM.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Prerequisites ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Docker installed (I am using OrbStack).&lt;/li&gt;
&lt;li&gt;Basic familiarity with the Terminal and shell commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Directory-Structure 🗃️
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmde9pqnx8l83ut2cdod8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmde9pqnx8l83ut2cdod8.png" alt="Complete Directory Structure (presto-lab is the root directory)" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's Get Started! 🛠️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1 - Create a Working Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a clean directory to hold all your configuration files and the &lt;strong&gt;docker-compose.yml&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p ~/presto-lab
cd ~/presto-lab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2 - Configure the Presto Java Coordinator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Coordinator requires configuration for its role, the discovery service, and a catalog to query.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create Directory&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p coordinator/etc/catalog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create coordinator/etc/config.properties&lt;/strong&gt;:This enables the coordinator and discovery server, and sets the port.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# coordinator/etc/config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
discovery-server.enabled=true
discovery.uri=http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;coordinator=true&lt;/strong&gt;: Enables coordinator mode.&lt;br&gt;
&lt;strong&gt;discovery-server.enabled=true&lt;/strong&gt;: Coordinator also hosts the worker discovery service.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create coordinator/etc/jvm.config&lt;/strong&gt;: Standard Java 17 flags for Presto.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# coordinator/etc/jvm.config
-server
-Xmx1G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-Djdk.attach.allowAttachSelf=true
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.ref=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.security=ALL-UNNAMED
--add-opens=java.base/javax.security.auth=ALL-UNNAMED
--add-opens=java.base/javax.security.auth.login=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/java.util.regex=ALL-UNNAMED
--add-opens=java.base/jdk.internal.loader=ALL-UNNAMED
--add-opens=java.base/sun.security.action=ALL-UNNAMED
--add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create coordinator/etc/node.properties&lt;/strong&gt;: Sets the node environment and data directory.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# coordinator/etc/node.properties
node.id=${ENV:HOSTNAME}
node.environment=test
node.data-dir=/var/lib/presto/data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Add TPCH Catalog coordinator/etc/catalog/tpch.properties&lt;/strong&gt;: The TPCH connector allows you to run test queries against an in-memory dataset.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# coordinator/etc/catalog/tpch.properties
connector.name=tpch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step 3 - Configure the Prestissimo (C++) Worker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Worker needs to know where the Coordinator/Discovery service is and how to identify itself within the network.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create Directory&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p worker-1/etc/catalog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create worker-1/etc/config.properties&lt;/strong&gt;: This configuration points the worker to the discovery service.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# worker-1/etc/config.properties
discovery.uri=http://coordinator:8080
presto.version=0.288-15f14bb
http-server.http.port=7777
shutdown-onset-sec=1
runtime-metrics-collection-enabled=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;discovery.uri=&lt;a href="http://coordinator:8080" rel="noopener noreferrer"&gt;http://coordinator:8080&lt;/a&gt;&lt;/strong&gt;: Uses the coordinator service name (defined in docker-compose) for in-network communication.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create worker-1/etc/node.properties&lt;/strong&gt;: Defines the worker's internal address for network registration.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# worker-1/etc/node.properties
node.environment=test
node.internal-address=worker-1
node.location=docker
node.id=worker-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;node.internal-address=worker-1&lt;/strong&gt;: Matches the service name for reliable registration.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Add TPCH Catalog worker-1/etc/catalog/tpch.properties&lt;/strong&gt;: The worker needs the catalog definition to execute the query stages.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# worker-1/etc/catalog/tpch.properties
connector.name=tpch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Repeat the Step 3 to add more workers&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Step 4 - Create docker-compose.yml&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This file orchestrates both the Java Coordinator and the C++ Worker containers. Create the file docker-compose.yml in your ~/presto-lab directory:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# docker-compose.yml
services:
  coordinator:
    image: public.ecr.aws/oss-presto/presto:latest
    platform: linux/amd64
    container_name: presto-coordinator
    hostname: coordinator
    ports:
      - "8080:8080"
    volumes:
      - ./coordinator/etc:/opt/presto-server/etc:ro
    restart: unless-stopped

  worker-1:
    image: public.ecr.aws/oss-presto/presto-native:latest
    platform: linux/amd64
    container_name: prestissimo-worker-1
    hostname: worker-1
    depends_on:
      - coordinator
    volumes:
      - ./worker-1/etc:/opt/presto-server/etc:ro
    restart: unless-stopped

  worker-2:
    image: public.ecr.aws/oss-presto/presto-native:latest
    platform: linux/amd64
    container_name: prestissimo-worker-2
    hostname: worker-2
    depends_on:
      - coordinator
    volumes:
      - ./worker-2/etc:/opt/presto-server/etc:ro
    restart: unless-stopped
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;coordinator&lt;/strong&gt; uses the standard &lt;strong&gt;Java Presto image&lt;/strong&gt; (presto:latest).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;worker-1 &amp;amp; worker-2&lt;/strong&gt; uses the &lt;strong&gt;Prestissimo (C++ Native)&lt;/strong&gt; image (presto-native:latest).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;platform: linux/amd64&lt;/strong&gt; is crucial for Apple Silicon Mac users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;volumes&lt;/strong&gt; mount your local configuration directories (etc) into the container's expected path &lt;strong&gt;(/opt/presto-server/etc)&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 5 - Start the Cluster and Verify&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker compose up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fht0z29pre79jk2pk659o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fht0z29pre79jk2pk659o.png" alt="Docker Container Status" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Verify: Open the Presto Web UI at &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt;. You should see the UI, with 3 Active Workers (1 Coordinator + 2 Workers).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bdfpuwalgzszhnbvqfz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bdfpuwalgzszhnbvqfz.png" alt="Presto UI" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To check detailed status and metadata about every node (Coordinator and Workers). Run below query.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select * from system.runtime.nodes;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hxjtv49kcunu8t012o6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7hxjtv49kcunu8t012o6.png" alt="Active Worker Status" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow Presto at Official &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/presto-foundation/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;, &lt;a href="https://www.youtube.com/@PrestoFoundation" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;, and Join &lt;a href="https://communityinviter.com/apps/prestodb/prestodb" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; channel to interact with the community.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>queryengine</category>
      <category>presto</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Build with PrestoDB: Community Workshop + In-Person Meetup</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Sat, 28 Jun 2025 15:59:05 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/build-with-prestodb-community-workshop-in-person-meetup-3e61</link>
      <guid>https://dev.to/saurabhmahawar/build-with-prestodb-community-workshop-in-person-meetup-3e61</guid>
      <description>&lt;p&gt;&lt;a href="https://lu.ma/0rxjmnkj" rel="noopener noreferrer"&gt;&lt;strong&gt;Click Here to Save your Spot&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqnmz2jiox4ihkoufdcs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqnmz2jiox4ihkoufdcs.png" alt="Event Details" width="798" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>presto</category>
      <category>datascience</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Join In-Person Community Meetup @Bengaluru, India</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Tue, 24 Jun 2025 18:04:18 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/join-in-person-community-meetup-bengaluru-india-2dod</link>
      <guid>https://dev.to/saurabhmahawar/join-in-person-community-meetup-bengaluru-india-2dod</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmb5cfyqcm4bfzz4105e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbmb5cfyqcm4bfzz4105e.png" alt="Meme" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🏷 &lt;strong&gt;Event Name:&lt;/strong&gt; From Data to Decisions – Accelerating Real-Time AI Outcomes&lt;br&gt;
📅 &lt;strong&gt;Date:&lt;/strong&gt; Saturday, July 19, 2025&lt;br&gt;
🕙 &lt;strong&gt;Time:&lt;/strong&gt; 10:00 AM – 1:00 PM&lt;br&gt;
📍 &lt;strong&gt;Venue:&lt;/strong&gt; Cloudera Office, Bengaluru&lt;br&gt;
🔗 &lt;strong&gt;RSVP Link:&lt;/strong&gt; &lt;a href="https://www.meetup.com/presto-bangalore/events/308570345/?eventOrigin=group_upcoming_events" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dear Developers, we are happy to invite you to a special in-person event hosted by &lt;strong&gt;IBM&lt;/strong&gt; and &lt;strong&gt;Cloudera&lt;/strong&gt;, bringing together data leaders, AI practitioners, and technology innovators to explore how enterprises can unlock real-time insights and accelerate AI outcomes at scale.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡 What to Expect:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Expert insights from IBM and Cloudera on modern data architectures&lt;/li&gt;
&lt;li&gt;Real-world use cases of AI-driven decision-making.&lt;/li&gt;
&lt;li&gt;Networking &amp;amp; Q/A with data professionals, engineers, and thought leaders&lt;/li&gt;
&lt;li&gt;Also, some cool swags and delicious lunch.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you’re a data engineer, &lt;strong&gt;AI/ML developer, data architect /analyst/engineer/scientist, or business leader&lt;/strong&gt; exploring the next wave of Data &amp;amp; AI transformation, this meetup is for you.&lt;/p&gt;

&lt;p&gt;Spaces are limited! Reserve your spot today and be part of the conversation shaping the future of real-time AI.&lt;/p&gt;

&lt;p&gt;Looking forward to meet you.. 👋👋&lt;/p&gt;

</description>
      <category>techmeetup</category>
      <category>opensource</category>
      <category>presto</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Setting Up Presto with Apache Superset using Docker 🐳 : Hands-On Guide</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Mon, 02 Jun 2025 08:32:19 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/setting-up-presto-with-apache-superset-using-docker-hands-on-guide-2254</link>
      <guid>https://dev.to/saurabhmahawar/setting-up-presto-with-apache-superset-using-docker-hands-on-guide-2254</guid>
      <description>&lt;p&gt;In previous articles, we explored how to download and install PrestoDB locally on your machine. In this guide, we take it a step further: you'll learn how to &lt;strong&gt;set up and run a single-node &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;Presto&lt;/a&gt; cluster using Docker&lt;/strong&gt;, and connect it to &lt;strong&gt;&lt;a href="https://superset.apache.org/" rel="noopener noreferrer"&gt;Apache Superset&lt;/a&gt;&lt;/strong&gt;. We'll walk through querying data from multiple sources like MySQL and MongoDB via PrestoDB. Whether you're a developer, data engineer, or BI enthusiast, this step-by-step tutorial will help you build a modern analytics stack with open-source tools and Docker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre-Requisites:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Docker Application (I am using &lt;a href="https://orbstack.dev/" rel="noopener noreferrer"&gt;OrbStack&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Knowledge of Basic Docker Commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step -1: Project Structure:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bvaf8buk7ex2p5pfpba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bvaf8buk7ex2p5pfpba.png" alt="Project Structure" width="800" height="756"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step -2: Setting Up Docker Compose:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: "3.8"

services:
  superset:
    image: apache/superset:latest
    container_name: superset
    ports:
      - "8088:8088"
    environment:
      SUPERSET_SECRET_KEY: 'supersecretkey'
      PYTHONUNBUFFERED: 1
    depends_on:
      - db
    volumes:
      - superset_home:/app/superset_home
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8088/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    command: &amp;gt;
      /bin/bash -c "
      sleep 10 &amp;amp;&amp;amp;
      superset db upgrade &amp;amp;&amp;amp;
      superset fab create-admin --username admin --firstname Admin --lastname User --email admin@superset.com --password admin &amp;amp;&amp;amp;
      superset init &amp;amp;&amp;amp;
      superset run -h 0.0.0.0 -p 8088
      "

  db:
    image: postgres:15
    container_name: superset_db
    environment:
      POSTGRES_DB: superset
      POSTGRES_USER: superset
      POSTGRES_PASSWORD: superset
    volumes:
      - db_data:/var/lib/postgresql/data

  mysql:
    image: mysql:latest
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: testdb
    ports:
      - "3307:3306"
    volumes:
      - mysql_data:/var/lib/mysql

  mongo:
    image: mongo:latest
    container_name: mongodb
    ports:
      - "27018:27017"
    volumes:
      - mongo_data:/data/db

  presto:
    image: prestodb/presto:latest
    container_name: presto
    ports:
      - "8081:8080"
    volumes:
      - ./presto/etc/catalog/mongodb.properties:/opt/presto-server/etc/catalog/mongodb.properties
      - ./presto/etc/catalog/mysql.properties:/opt/presto-server/etc/catalog/mysql.properties
    depends_on:
      - mysql
      - mongo

volumes:
  superset_home:
  db_data:
  mysql_data:
  mongo_data:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step -3: Creating Presto Catalog Files:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;mysql.properties (To connect MySQL Database)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;connector.name=mysql
connection-url=jdbc:mysql://mysql:3306
connection-user=root
connection-password=root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;mongodb.properties (To connect MongoDB Database)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;connector.name=mongodb
mongodb.seeds=mongodb:27017
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step -4: Start all the Services:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to terminal and navigate to the docker-compose.yml file directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1vni0g5cwibkmyvdef8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1vni0g5cwibkmyvdef8.png" alt="Present Working Directory" width="800" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hit the below command. (It will automatically start all the services, just wait for 3-5 mins, as docker will pull all the images).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker-compose up -d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Once all the images are pulled, hit the below command to check the status of all containers.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1odibke3z3sfjorg8urq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1odibke3z3sfjorg8urq.png" alt="Docker Running Container's Status" width="800" height="65"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtsaewb0gc4r0sjwaj0b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqtsaewb0gc4r0sjwaj0b.png" alt="Orbstack" width="800" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You will see an output like snapshot shared above. Now, let's confirm that PrestoDB and Apache Superset are running on their respective ports or not.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open browser and check Apache Superset is listening on port 8088 (&lt;a href="http://localhost:8088/" rel="noopener noreferrer"&gt;http://localhost:8088/&lt;/a&gt;) and Presto on port 8081 (&lt;a href="http://localhost:8081/" rel="noopener noreferrer"&gt;http://localhost:8081/&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfx6kgujruumupajbz7l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfx6kgujruumupajbz7l.png" alt="Apache Superset is listening on port 8088" width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mhjbqqbr7s8hf70zr9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mhjbqqbr7s8hf70zr9w.png" alt="Presto is listening on port 8081" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step -5: Connecting PrestoDB as a database to Apache Superset:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Superset doesn't ship Presto driver by default. So, as a next step we need to install it manually. Hit the below command to enter inside superset docker container.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker exec -it superset bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;As soon as you hit this command, you will be inside superset docker container.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We need to install &lt;strong&gt;pyhive[presto]&lt;/strong&gt;, this is a important Python package to connect PrestoDB with Superset. Hit the below command.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install "pyhive[presto]"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Once Installation is complete, exit the Superset container using exit command and restart Superset container.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker restart superset
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Open Superset on browser: localhost:8088  and enter username and password.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Username:admin
Password:admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Settings -&amp;gt; Database Connections -&amp;gt; Database&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuq9qu23q7h2e7eohpqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiuq9qu23q7h2e7eohpqy.png" alt="Click on Test Connection to check the status" width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;CONNECT&lt;/strong&gt; once you see "&lt;strong&gt;Connection looks good&lt;/strong&gt;".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Congratulations, everything is running smoothly and Presto has connected with Apache Superset.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step -6: Let's run a SQL Query also verify MySQL and MongoDB should visible as Catalogs:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feczaq225iyd6zfbta0m8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feczaq225iyd6zfbta0m8.png" alt="Query Executed Successfully with MySQL and MongoDB as catalogs." width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84z0vudwf00k3it1xsjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84z0vudwf00k3it1xsjl.png" alt="Conclusion" width="800" height="1088"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow Presto at Official &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/presto-foundation/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;, &lt;a href="https://www.youtube.com/@PrestoFoundation" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;, and Join &lt;a href="https://communityinviter.com/apps/prestodb/prestodb" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; channel to interact with the community.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>datascience</category>
      <category>presto</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>📊 Visualise Presto Queries with Apache Zeppelin: A Hands-On Guide</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Tue, 13 May 2025 05:41:06 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/visualise-presto-queries-with-apache-zeppelin-a-hands-on-guide-23hj</link>
      <guid>https://dev.to/saurabhmahawar/visualise-presto-queries-with-apache-zeppelin-a-hands-on-guide-23hj</guid>
      <description>&lt;p&gt;In the previous article, we explored the installation of Presto. Building on that foundation, it's time to take your data exploration one step further by integrating Presto with &lt;a href="https://zeppelin.apache.org/" rel="noopener noreferrer"&gt;&lt;strong&gt;Apache Zeppelin&lt;/strong&gt;&lt;/a&gt;, a powerful web-based notebook that allows interactive data analytics.&lt;/p&gt;

&lt;p&gt;Zeppelin provides an easy-to-use interface where you can write and execute SQL queries directly on Presto and visualise your data seamlessly. Whether you're a &lt;strong&gt;data engineer, data scientist, or developer&lt;/strong&gt;, connecting Presto with Zeppelin opens the door to interactive data exploration, and stunning visualization's.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre-Requisites&lt;/strong&gt; 🎯&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open JDK or Oracle JDK {1.8 (151+)}&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OS (Mac/ Ubuntu)&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I am using Apache Zeppelin version 0.11.2, because its compatible with JDK 1.8, you can get latest version if you have JDK 11 installed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step - 1: Install Apache Zeppelin&lt;/strong&gt; 📥&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open below link in any browser (Chrome/ Safari/ Firefox). It will redirect to official Apache Zeppelin download page.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://zeppelin.apache.org/download.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9s0bsd7g2g7rvvxj93u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9s0bsd7g2g7rvvxj93u.png" alt="Apache Zeppelin Version - 0.11.2 ✅" width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitc43c0vrggpz781rtvs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitc43c0vrggpz781rtvs.png" alt="Download the Package (tgz file) ✅" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a directory at Desktop or any preferred location in your system and name it &lt;strong&gt;Zeppelin (or whatever you like)&lt;/strong&gt;. Move the downloaded package to the Zeppelin directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open &lt;strong&gt;terminal/command line interface&lt;/strong&gt; and navigate to your Zeppelin directory and run below command.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;tar -xvzf zeppelin-*.tgz (replace * with your downloaded version)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;It will create a directory like this: &lt;strong&gt;zeppelin-0.11.2-bin-all&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffil1koixsej7sk6xtjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fffil1koixsej7sk6xtjz.png" alt="Directory Structure after Installing Apache Zeppelin 🗃️" width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step -2 : Configure Apache Zeppelin&lt;/strong&gt; ⚙️ 🔧&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Apache Zeppelin uses default port 8080 and uses Hadoop or Spark at the time of start, so we have to configure it to run Zeppelin smoothly.

We can't use port 8080 for Zeppelin because its already in use by Presto server, so we will configure it for some other port, for example (8888).

Also, we are not using Hadoop or Spark at the moment, so we will disable it as well,(Optional if you are using Hadoop or Spark).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Navigate to conf directory inside &lt;strong&gt;zeppelin-0.11.2-bin-all&lt;/strong&gt;. Inside &lt;strong&gt;conf directory&lt;/strong&gt;, two files will be available named as &lt;strong&gt;zeppelin-env.sh.template&lt;/strong&gt; and &lt;strong&gt;zeppelin-site.xml.template&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a copy of both files and rename it to &lt;strong&gt;zeppelin-env.sh&lt;/strong&gt; and &lt;strong&gt;zeppelin-site.xml&lt;/strong&gt; respectively.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open &lt;strong&gt;zeppelin-env.sh&lt;/strong&gt; in any text editor or code editor (I prefer Visual Studio Code) and add below code in the last line. Save and close the file, after adding the code.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export USE_HADOOP= false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📌 &lt;strong&gt;This will disable the Hadoop configuration for Apache Zeppelin&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now open &lt;strong&gt;zeppelin-site.xml&lt;/strong&gt; file and look for below code.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;property&amp;gt;
  &amp;lt;name&amp;gt;zeppelin.server.port&amp;lt;/name&amp;gt;
  &amp;lt;value&amp;gt;8080&amp;lt;/value&amp;gt;
  &amp;lt;description&amp;gt;Server port.&amp;lt;/description&amp;gt;
&amp;lt;/property&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Replace the &lt;strong&gt;port 8080&lt;/strong&gt; with any port which is available, in my case I have added &lt;strong&gt;8888&lt;/strong&gt;, save and close the file, after making changes in configuration.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;property&amp;gt;
  &amp;lt;name&amp;gt;zeppelin.server.port&amp;lt;/name&amp;gt;
  &amp;lt;value&amp;gt;8888&amp;lt;/value&amp;gt;
  &amp;lt;description&amp;gt;Server port.&amp;lt;/description&amp;gt;
&amp;lt;/property&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Now, we are all set 😎, Let's Go 🚀&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step - 3: Start Apache Zeppelin 🏁 🟢&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open terminal/command line interface and navigate to &lt;strong&gt;zeppelin-0.11.2-bin-all&lt;/strong&gt; directory.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run below command to start Apache Zeppelin.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/zeppelin-daemon.sh start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;As soon as you will hit the command, Apache Zeppelin will be started and it will be accessible on &lt;strong&gt;localhost:8888&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnr0sfba4jspochlxc7d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnr0sfba4jspochlxc7d.png" alt="Apache Zeppelin Web UI ⚡" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To check the status of Apache Zeppelin 🔎
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/zeppelin-daemon.sh status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To stop the Apache Zeppelin 🔴
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/zeppelin-daemon.sh stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step - 4: Connecting Apache Zeppelin to Presto 🔗&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;To connect Zeppelin to Presto, we need &lt;strong&gt;Presto JDBC driver&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open below link in any browser (Chrome/ Safari/ Firefox) and download the Presto JDBC driver.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://prestodb.io/getting-started/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcp0hl3shddlbelzcy60.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frcp0hl3shddlbelzcy60.png" alt="Download Presto JDBC driver ❗" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Once you click download, &lt;strong&gt;presto-jdbc-0.291.jar&lt;/strong&gt; file will be downloaded.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You need to move this jar file to the below directory.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Desktop/ Zeppelin/ zeppelin-0.11.2-bin-all/ interpreter/ jdbc/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Restart Zeppelin to load the driver 🔄
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/zeppelin-daemon.sh restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step - 5 : Create Presto Interpreter in Zeppelin 🔀&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open browser and go to localhost:8888&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on &lt;strong&gt;Interpreter&lt;/strong&gt; tab at the top right of the page.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjyswt52ptxsxpnrlaks3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjyswt52ptxsxpnrlaks3.png" alt="To view or add Interpreters 👀" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;strong&gt;+ Create&lt;/strong&gt; in the top right corner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc977b0vbirf6qymsapew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc977b0vbirf6qymsapew.png" alt="To create new Interpreter ➕" width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4feday9ipd5c03lcuq3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu4feday9ipd5c03lcuq3.png" alt="To configure Interpreter according to Presto 🧩" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fill the following details under &lt;strong&gt;Create new Interpreter&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📌 Interpreter Name: presto
📌 Interpreter group: jdbc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Let's configure JDBC properties for Presto
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📌 default.url -&amp;gt; jdbc:presto://localhost:8080/mysql/default
📌 default.user -&amp;gt; presto
📌 default.driver -&amp;gt; com.facebook.presto.jdbc.PrestoDriver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuyarvbaluwe2f68boed.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuyarvbaluwe2f68boed.png" alt="Presto Interpreter Properties Configuration 🛠️" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Save the configuration and we are good to go.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restart Apache Zeppelin to reload the interpreter 🔄&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bin/zeppelin-daemon.sh restart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step - 6: Now It's showtime, Run SQL Queries 🔥&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on &lt;strong&gt;Notebook&lt;/strong&gt; from Zeppelin dashboard and &lt;strong&gt;Create new Note&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5yuht3g3cwgnq7g5bda.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5yuht3g3cwgnq7g5bda.png" alt="Create New Notebook ✍🏻" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Name the note anything you like (Presto Query Engine).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;presto&lt;/strong&gt; from the drop down list for &lt;strong&gt;Default Interpreter&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgd13mspswi3ryadl90wh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgd13mspswi3ryadl90wh.png" alt="Select the presto Interpreter ✅" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the following line to the first paragraph of the notebook to establish the connection.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%presto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Run Basic SQL Queries to check everything is running smoothly. For Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%presto
Show CATALOGS;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F79nzczlvs6qkglbqzjcm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F79nzczlvs6qkglbqzjcm.png" alt="SQL Query Executed successfully 🎉" width="800" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Follow Presto at Official &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/presto-foundation/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;, &lt;a href="https://www.youtube.com/@PrestoFoundation" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;, and Join &lt;a href="https://communityinviter.com/apps/prestodb/prestodb" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; channel to interact with the community.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>datascience</category>
      <category>dataengineering</category>
      <category>presto</category>
    </item>
    <item>
      <title>🚀 Setting Up Presto : A Step by Step Installation Guide to Run SQL Queries.</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Thu, 01 May 2025 15:03:05 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/setting-up-presto-a-step-by-step-installation-guide-to-run-sql-queries-85p</link>
      <guid>https://dev.to/saurabhmahawar/setting-up-presto-a-step-by-step-installation-guide-to-run-sql-queries-85p</guid>
      <description>&lt;p&gt;In previous articles, we explored the fundamentals of Presto as a powerful open-source SQL query engine and the modern data storage paradigms of data warehouses and data lakes. Now it's time to roll up our sleeves and get our hands dirty with a practical implementation.&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through installing Presto and show how to run queries with ease.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pre-Requisites
&lt;/h2&gt;

&lt;p&gt;Before getting started, ensure that the following are installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operating System: macOS (Intel or Apple Silicon), Linux, or Windows.&lt;/li&gt;
&lt;li&gt;Java Development Kit (JDK): Java 17 is now required for newer Presto versions. (Java 8 is no longer sufficient). (Run java -version to confirm).&lt;/li&gt;
&lt;li&gt;Python: Version 2.7 or 3.x (Presto’s launcher uses Python). (Run python3 --version to confirm).&lt;/li&gt;
&lt;li&gt;RAM: Minimum 4GB available (8GB+ recommended).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Download and Extract
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open terminal/command line interface and run below command’s.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Download the tarball&lt;/span&gt;
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.296/presto-server-0.296.tar.gz

&lt;span class="c"&gt;# 2. Extract it&lt;/span&gt;
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-xvzf&lt;/span&gt; presto-server-0.296.tar.gz

&lt;span class="c"&gt;# 3. Move it to your Desktop or your preferred directory&lt;/span&gt;
&lt;span class="nb"&gt;mv &lt;/span&gt;presto-server-0.296 ~/Desktop/presto-server
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/Desktop/presto-server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Verify that the resulting directory structure matches the example below:
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk6m456akminzuz7r7jfv.png" alt="Directory Structure
" width="640" height="640"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Configure the Server
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Inside presto-server–*, create the etc configuration directory.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;etc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create the following four files inside the etc directory: config.properties, jvm.config, log.properties, and node.properties.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F37z15ses3ulxgi200382.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F37z15ses3ulxgi200382.png" alt="Directory Structure - After Configuration" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply the following configurations to the node.properties file. (This identifies your machine).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/path-to-your-presto-server/data -----&amp;gt; Set this path to your presto server directory location
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Apply the following configurations to the jvm.config file. (This tunes the Java engine. Use this exact config to support Java 17).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-server
-Xmx2G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
-Djdk.attach.allowAttachSelf=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Apply the following configurations to the config.properties file. (This sets up your node as both a Coordinator and a Worker).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=1.5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=1.2GB
discovery-server.enabled=true
discovery.uri=http://localhost:8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;query.max-memory (1.5GB) must be smaller than the JVM Heap (2GB).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Apply the following configurations to the log.properties file. (This sets your default logging level).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;com.facebook.presto=INFO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Add Data Connectors
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create the catalog folder inside etc directory:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;etc/catalog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a file named etc/catalog/tpch.properties and apply below configuration:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;connector.name=tpch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Start the Server
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the presto-server-* directory and run command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/launcher start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Wait 10 seconds, then check the status:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/launcher status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Access the Presto UI at &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt; via your web browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8lf6dvxrrngcg43lhn4j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8lf6dvxrrngcg43lhn4j.png" alt="Verify that Presto Server has started on localhost 8080&amp;lt;br&amp;gt;
" width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Run Your First Query through Presto CLI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Download the CLI from &lt;a href="https://prestodb.io/getting-started/" rel="noopener noreferrer"&gt;here&lt;/a&gt; and move the jar file to presto-server-* directory with below command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mv&lt;/span&gt; ~/Downloads/presto-cli-0.296-executable.jar ./presto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Make it executable:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x presto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Connect to your local cluster:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./presto &lt;span class="nt"&gt;--server&lt;/span&gt; localhost:8080 &lt;span class="nt"&gt;--catalog&lt;/span&gt; tpch &lt;span class="nt"&gt;--schema&lt;/span&gt; tiny
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Once you see the presto:tiny&amp;gt; prompt, you can type your SQL:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SHOW&lt;/span&gt; &lt;span class="n"&gt;TABLES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Run a standard TPC-H aggregation query
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;returnflag&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linestatus&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;quantity&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;sum_qty&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;count&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;count_order&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;lineitem&lt;/span&gt; &lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;returnflag&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;linestatus&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;To stop the server cleanly:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/launcher stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Troubleshooting Common Issues
&lt;/h2&gt;

&lt;p&gt;If the server fails to launch, investigate these three common configuration pitfalls:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Port 8080 already in use&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Error&lt;/strong&gt;: java.net.BindException: Address already in use. Another app (often another web server or Jenkins) is using port 8080.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix&lt;/strong&gt;: Kill the process using it: lsof -i :8080 then kill -9 . Change Presto’s port in etc/config.properties to 8081.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Java version not supported&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Error&lt;/strong&gt;: Presto requires Java 17+ (found 1.8.0_xxx). You are running an old Java version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix&lt;/strong&gt;: Run java -version to check. If you have valid Java 17 installed but it’s not default, point to it explicitly in your startup command: JAVA_HOME=/path/to/java17 bin/launcher start&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Server Starts but Dies Immediately&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Error&lt;/strong&gt;: Launcher says “Started” but status says “Not running”. This is usually a configuration typo or memory issue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Fix&lt;/strong&gt;: Check the detailed logs: cat data/var/log/server.log. Ensure query.max-memory in config.properties is less than -Xmx in jvm.config.&lt;/p&gt;

&lt;p&gt;In the next article, we will see how to install Apache Zeppelin and connect it with Presto.&lt;/p&gt;

&lt;p&gt;Follow Presto at Official &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/presto-foundation/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;, &lt;a href="https://www.youtube.com/@PrestoFoundation" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;, and Join &lt;a href="https://communityinviter.com/apps/prestodb/prestodb" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; channel to interact with the community.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>presto</category>
      <category>datascience</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Data Warehouses and Data Lakes: Understanding Modern Data Storage Paradigms 📦</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Fri, 25 Apr 2025 16:20:42 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/data-warehouses-and-data-lakes-understanding-modern-data-storage-paradigms-5h01</link>
      <guid>https://dev.to/saurabhmahawar/data-warehouses-and-data-lakes-understanding-modern-data-storage-paradigms-5h01</guid>
      <description>&lt;p&gt;To harness the power of data for decision-making, businesses rely on data management architectures like data warehouses and data lakes. While both serve as data repositories, they cater to different use cases, offering unique advantages and challenges. In this evolving landscape, Presto has emerged as a powerful query engine that bridges the gap between data warehouses and data lakes, enabling fast, distributed SQL queries across disparate data sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is a Data Warehouse? (🏛️ -&amp;gt; 🛢️+🛢️+🛢️)&lt;/strong&gt;&lt;br&gt;
A data warehouse is a &lt;strong&gt;structured repository&lt;/strong&gt; designed for analytical processing and reporting. It integrates data from multiple sources, transforms it into a consistent format, and stores it in a structured manner using predefined schemas. Data warehouses are optimized for fast query performance and are widely used for business intelligence (BI), reporting, and analytics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffr7a1a06a7lzslh01bhr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffr7a1a06a7lzslh01bhr.png" alt="Data Warehouse Architecture" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Characteristics of Data Warehouses:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Structured Data Storage&lt;/strong&gt;: Data is cleaned, processed, and stored in structured formats, making it easy to query.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema-on-Write&lt;/strong&gt;: Data must conform to a predefined schema before being stored.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimized for Analytical Queries&lt;/strong&gt;: Supports complex SQL queries and aggregations for reporting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Historical Data Analysis&lt;/strong&gt;: Designed to store and analyze historical data trends over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Examples&lt;/strong&gt;: Amazon Redshift, Google BigQuery, Snowflake, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supported Data Types&lt;/strong&gt;: Structured data such as relational databases and transactional data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What is a Data Lake? (🏛️ -&amp;gt; 🔊+🎬+🗂️+📊+📈)&lt;/strong&gt;&lt;br&gt;
A data lake is a centralized repository that stores vast amounts of &lt;strong&gt;raw, structured, semi-structured, and unstructured data&lt;/strong&gt;. Unlike data warehouses, data lakes do not enforce a predefined schema, allowing organizations to store data in its native format and process it when needed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsiy1cl8ls62565vsjri.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flsiy1cl8ls62565vsjri.png" alt="Data Lake Architecture" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Sources 📚&lt;/strong&gt;: Where your data comes from (databases, files, etc.).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ingestion 📥&lt;/strong&gt;: Bringing data into the lake.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Raw Data Lake 🏞️&lt;/strong&gt;: Stores data in its original form.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transformation 🛠️&lt;/strong&gt;: Cleaning and preparing data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Curated Data Lake 📊&lt;/strong&gt;: Organized data ready for analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Analysis &amp;amp; ML 📈🧠&lt;/strong&gt;: Using the data for insights and predictions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Catalog 📝&lt;/strong&gt;: Keeps track of your data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Governance 🛡️&lt;/strong&gt;: Ensures data quality and security.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Characteristics of Data Lakes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Schema-on-Read&lt;/strong&gt;: Data is stored in raw form and structured at the time of analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supports Diverse Data Types&lt;/strong&gt;: Can store structured, semi-structured, and unstructured data such as logs, multimedia files, and sensor data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Highly Scalable and Cost-Effective&lt;/strong&gt;: Built on cloud-based storage systems that allow massive scalability.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible Analytics&lt;/strong&gt;: Supports machine learning (ML), big data analytics, and real-time processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Examples&lt;/strong&gt;: Amazon S3 (with AWS Lake Formation), Azure Data Lake, Google Cloud Storage, Apache Hadoop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Supported Data Types&lt;/strong&gt;: Structured (relational databases), semi-structured (JSON, XML, CSV), and unstructured (images, videos, IoT sensor data, social media feeds, logs).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Note: Presto has the ability (💪) to query data from both warehouses and lakes without data movement or duplication.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow Presto at Official &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/presto-foundation/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;, &lt;a href="https://www.youtube.com/@PrestoFoundation" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;, and &lt;a href="https://communityinviter.com/apps/prestodb/prestodb" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; channel to join the community.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>presto</category>
      <category>datascience</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Introduction to Presto: Open Source SQL Query Engine that's changing Big Data Analytics</title>
      <dc:creator>Saurabh Mahawar</dc:creator>
      <pubDate>Fri, 25 Apr 2025 11:38:37 +0000</pubDate>
      <link>https://dev.to/saurabhmahawar/introduction-to-presto-open-source-sql-query-engine-thats-changing-big-data-analytics-3o1i</link>
      <guid>https://dev.to/saurabhmahawar/introduction-to-presto-open-source-sql-query-engine-thats-changing-big-data-analytics-3o1i</guid>
      <description>&lt;p&gt;In today's data-driven world, organizations face a constant challenge: how to analyse massive datasets quickly and efficiently without moving data between disparate systems. &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;Presto&lt;/a&gt;, an open-source distributed SQL query engine that's revolutionizing how we approach big data analytics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Presto?&lt;/strong&gt;&lt;br&gt;
Presto is an open-source distributed SQL query engine designed for fast interactive analysis of data at any scale. Unlike traditional database systems that require data to be loaded into their proprietary storage format, Presto can query data directly where it lives – be it Hadoop, AWS S3, Google Cloud Storage, Relational Databases, NoSQL systems, or even custom data sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Presto Architecture allows you:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Query data across multiple sources without ETL (Extract, Transform &amp;amp; Load).&lt;/li&gt;
&lt;li&gt;Process petabytes of data with sub-second query response times.&lt;/li&gt;
&lt;li&gt;Use familiar ANSI SQL syntax for complex analytics.&lt;/li&gt;
&lt;li&gt;Scale resources independently of your data volume.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The Origin Story: From Facebook to Global Adoption&lt;/strong&gt;&lt;br&gt;
Presto was born in 2012 at Facebook (now Meta) when engineers faced a challenge: Facebook's data analysts were waiting hours for their Hive queries to complete, severely limiting their productivity.&lt;/p&gt;

&lt;p&gt;The team set out to build a new query engine that could provide interactive query speeds on Facebook's massive &lt;a href="https://research.facebook.com/publications/presto-sql-on-everything/" rel="noopener noreferrer"&gt;300PB data warehouse&lt;/a&gt;. Within a few months, they had a prototype that was 10x faster than Hive for many workloads, and by 2013, Facebook open-sourced Presto to the world.&lt;/p&gt;

&lt;p&gt;Since then, Presto has been adopted by technology giants like Uber, Netflix, Twitter, and Airbnb, as well as countless enterprises across industries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxgy7te1awtwouhpoa0h8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxgy7te1awtwouhpoa0h8.png" alt="High-Level Architecture of Presto" width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coordinator Node (👨💼)&lt;/strong&gt;&lt;br&gt;
The coordinator is the brain of the operation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accepts SQL queries from clients&lt;/li&gt;
&lt;li&gt;Parses and analyzes queries&lt;/li&gt;
&lt;li&gt;Creates and optimizes query execution plans&lt;/li&gt;
&lt;li&gt;Distributes work to worker nodes&lt;/li&gt;
&lt;li&gt;Tracks progress and returns results to clients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Worker Nodes (👷,👷,👷)&lt;/strong&gt;&lt;br&gt;
Workers are the computational workhorses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute tasks assigned by the coordinator&lt;/li&gt;
&lt;li&gt;Read data from source systems through connectors&lt;/li&gt;
&lt;li&gt;Process data in parallel&lt;/li&gt;
&lt;li&gt;Exchange intermediate results with other workers&lt;/li&gt;
&lt;li&gt;Return final results to the coordinator&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connectors (🔌)&lt;/strong&gt;&lt;br&gt;
Connectors are Presto's interfaces to data sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Abstract away the details of different storage systems&lt;/li&gt;
&lt;li&gt;Handle data location, format, and access methods&lt;/li&gt;
&lt;li&gt;Translate between Presto's internal representation and source data formats&lt;/li&gt;
&lt;li&gt;Enable seamless querying across disparate systems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World Use Cases&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Data Lake Analytics&lt;/li&gt;
&lt;li&gt;Federated Queries Across Systems&lt;/li&gt;
&lt;li&gt;Interactive BI &amp;amp; Dash-boarding (Real Time Analytics)
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Note: Presto is not a Database (⛔) and it doesn't replace databases.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Follow Presto at Official &lt;a href="https://prestodb.io/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;, &lt;a href="https://www.linkedin.com/company/presto-foundation/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt;, &lt;a href="https://www.youtube.com/@PrestoFoundation" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;, and &lt;a href="https://communityinviter.com/apps/prestodb/prestodb" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; channel to join the community.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>presto</category>
      <category>dataengineering</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
