<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Cradicle Explorer</title>
    <link href="/css/bootstrap/bootstrap.min.css" rel="stylesheet">
    <style>
      .form-control-dark::placeholder {
          color: #aaa;
          opacity: 1;
      }
    </style>
    <link rel="stylesheet" href="/assets/fontawesome/css/all.min.css">
    <link rel="icon" type="image/png" href="/favicon.png">


                <link href="/css/dashboard.css" rel="stylesheet">
                </head>
                <body>
                <header class="navbar navbar-dark sticky-top bg-dark flex-md-nowrap p-0 shadow">
                  <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6" href="/">Cradicle Explorer</a>
                  <button class="navbar-toggler position-absolute d-md-none collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebarMenu" aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                  </button>
                  <form method="get" action="/cgi-bin/main" style="width:100%;"><input class="form-control form-control-dark w-100 rounded-0 border-0" type="text" name="q" placeholder="Search repos" aria-label="Search"></form>
                  <div class="navbar-nav flex-row">
                    <div class="nav-item text-nowrap">
                      <a class="nav-link px-3 active" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa">ai-data-frameworks_LakeSoul</a>
                    </div>
                  </div>
                </header>
                <div class="container-fluid">
                  <div class="row">
                    <nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-dark sidebar collapse">
                      <div class="position-sticky pt-3 sidebar-sticky">
                        <ul class="nav flex-column">
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa">
                              <i class="align-text-bottom fa-solid fa-info"></i>
                              Info
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&issue=list">
                              <i class="align-text-bottom fa-solid fa-layer-group"></i>
                              Issues
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&patch=list">
                              <i class="align-text-bottom fa-solid fa-vest-patches"></i>
                              Patches
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&wallet=list">
                              <i class="align-text-bottom fa-solid fa-wallet"></i>
                              Wallets
                            </a>
                          </li>
                          <li class="nav-item">
                            <a class="nav-link active" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=.">
                              <i class="align-text-bottom fa-solid fa-code"></i>
                              Source
                            </a>
                          </li>
                        <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted text-uppercase">
                          <span></span>
                        </h6>
                        <ul class="nav flex-column mb-2">
                        
    <h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-1 mb-1 text-muted text-uppercase">
      <span>Source</span>
    </h6>
    <li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=.cargo"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .cargo</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=.github"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> .github</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=docker"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> docker</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=javadoc"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> javadoc</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=lakesoul-common"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> lakesoul-common</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=lakesoul-flink"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> lakesoul-flink</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=lakesoul-presto"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> lakesoul-presto</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=lakesoul-spark-gluten"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> lakesoul-spark-gluten</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=lakesoul-spark"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> lakesoul-spark</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=native-io"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> native-io</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=python"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> python</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=rust"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> rust</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=script"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> script</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> website</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fblog"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> blog</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fdocs"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> docs</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fdocs%2F01-Getting+Started"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> 01-Getting Started</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fdocs%2F02-Tutorials"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> 02-Tutorials</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fdocs%2F03-Usage+Docs"><i class="fa-solid fa-folder-open" style="color:#f0c040;"></i> 03-Usage Docs</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fdocs%2F03-Usage+Docs%2F15-spark-gluten"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> 15-spark-gluten</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F01-setup-meta-env.md"><i class="fa-solid fa-file" style="color:#888;"></i> 01-setup-meta-env.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F02-setup-spark.md"><i class="fa-solid fa-file" style="color:#888;"></i> 02-setup-spark.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F03-spark-api-docs.md"><i class="fa-solid fa-file" style="color:#888;"></i> 03-spark-api-docs.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F04-cdc-ingestion-table.mdx"><i class="fa-solid fa-file" style="color:#888;"></i> 04-cdc-ingestion-table.mdx</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F05-flink-cdc-sync.md"><i class="fa-solid fa-file" style="color:#888;"></i> 05-flink-cdc-sync.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F06-flink-lakesoul-connector.md"><i class="fa-solid fa-file" style="color:#888;"></i> 06-flink-lakesoul-connector.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F08-auto-compaction-task.md"><i class="fa-solid fa-file" style="color:#888;"></i> 08-auto-compaction-task.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F09-clean-redundant-data.md"><i class="fa-solid fa-file" style="color:#888;"></i> 09-clean-redundant-data.md</a></li><li><a class="nav-link py-0 active" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F10-setup-presto.md"><i class="fa-solid fa-file" style="color:#888;"></i> 10-setup-presto.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F11-machine-learning-support.md"><i class="fa-solid fa-file" style="color:#888;"></i> 11-machine-learning-support.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F12-workspace-and-rbac.md"><i class="fa-solid fa-file" style="color:#888;"></i> 12-workspace-and-rbac.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F13-setup-kyuubi.md"><i class="fa-solid fa-file" style="color:#888;"></i> 13-setup-kyuubi.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F14-export-to-databases.md"><i class="fa-solid fa-file" style="color:#888;"></i> 14-export-to-databases.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F15-lakesoul-doris.md"><i class="fa-solid fa-file" style="color:#888;"></i> 15-lakesoul-doris.md</a></li><li><a class="nav-link py-0" style="padding-left:64px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F03-Usage+Docs%2F16-new-async-clean-service.md"><i class="fa-solid fa-file" style="color:#888;"></i> 16-new-async-clean-service.md</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fdocs%2F04-Deployment"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> 04-Deployment</a></li><li><a class="nav-link py-0" style="padding-left:48px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocs%2F00-intro.md"><i class="fa-solid fa-file" style="color:#888;"></i> 00-intro.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fi18n"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> i18n</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fsrc"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> src</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fstatic"><i class="fa-solid fa-folder" style="color:#f0c040;"></i> static</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2F.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2FREADME.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fbabel.config.js"><i class="fa-solid fa-file" style="color:#888;"></i> babel.config.js</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fcanvas-loader.js"><i class="fa-solid fa-file" style="color:#888;"></i> canvas-loader.js</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fdocusaurus.config.js"><i class="fa-solid fa-file" style="color:#888;"></i> docusaurus.config.js</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fpackage-lock.json"><i class="fa-solid fa-file" style="color:#888;"></i> package-lock.json</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fpackage.json"><i class="fa-solid fa-file" style="color:#888;"></i> package.json</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fsidebars.js"><i class="fa-solid fa-file" style="color:#888;"></i> sidebars.js</a></li><li><a class="nav-link py-0" style="padding-left:32px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=website%2Fvariable-inject.js"><i class="fa-solid fa-file" style="color:#888;"></i> variable-inject.js</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=.dockerignore"><i class="fa-solid fa-file" style="color:#888;"></i> .dockerignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=.gitignore"><i class="fa-solid fa-file" style="color:#888;"></i> .gitignore</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=.taplo.toml"><i class="fa-solid fa-file" style="color:#888;"></i> .taplo.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=CODE_OF_CONDUCT.md"><i class="fa-solid fa-file" style="color:#888;"></i> CODE_OF_CONDUCT.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=CONTRIBUTING.md"><i class="fa-solid fa-file" style="color:#888;"></i> CONTRIBUTING.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=Cargo.lock"><i class="fa-solid fa-file" style="color:#888;"></i> Cargo.lock</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=Cargo.toml"><i class="fa-solid fa-file" style="color:#888;"></i> Cargo.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=Cross.toml"><i class="fa-solid fa-file" style="color:#888;"></i> Cross.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=LICENSE"><i class="fa-solid fa-file" style="color:#888;"></i> LICENSE</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=MANIFEST.in"><i class="fa-solid fa-file" style="color:#888;"></i> MANIFEST.in</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=README-CN.md"><i class="fa-solid fa-file" style="color:#888;"></i> README-CN.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=README.md"><i class="fa-solid fa-file" style="color:#888;"></i> README.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=clippy.toml"><i class="fa-solid fa-file" style="color:#888;"></i> clippy.toml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=community-guideline-cn.md"><i class="fa-solid fa-file" style="color:#888;"></i> community-guideline-cn.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=community-guideline.md"><i class="fa-solid fa-file" style="color:#888;"></i> community-guideline.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=community-roles-cn.md"><i class="fa-solid fa-file" style="color:#888;"></i> community-roles-cn.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=community-roles.md"><i class="fa-solid fa-file" style="color:#888;"></i> community-roles.md</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=flake.nix"><i class="fa-solid fa-file" style="color:#888;"></i> flake.nix</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=lakesoul.properties"><i class="fa-solid fa-file" style="color:#888;"></i> lakesoul.properties</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=lefthook.yml"><i class="fa-solid fa-file" style="color:#888;"></i> lefthook.yml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=pg.property"><i class="fa-solid fa-file" style="color:#888;"></i> pg.property</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=pom.xml"><i class="fa-solid fa-file" style="color:#888;"></i> pom.xml</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=pyrightconfig.json"><i class="fa-solid fa-file" style="color:#888;"></i> pyrightconfig.json</a></li><li><a class="nav-link py-0" style="padding-left:16px;" href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&file=rust-toolchain.toml"><i class="fa-solid fa-file" style="color:#888;"></i> rust-toolchain.toml</a></li>
    
                        </ul>
                      </div>
                    </nav>
                <main class="col-md-9 ms-sm-auto col-lg-10">
                  <div class="container px-1 py-3">
        
<div class="mb-2" style="font-size:1.1rem;"><a href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=.">/</a> <a href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website">website</a> / <a href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fdocs">docs</a> / <a href="/cgi-bin/repo?id=zF52muTmNTEBViAooa88gUYkfRZa&source=website%2Fdocs%2F03-Usage+Docs">03-Usage Docs</a> / 10-setup-presto.md</div>
        <div class="list-group">
        <div class="list-group-item">
        <div class="mb-2" style="font-weight:bold;"><i class="fa-solid fa-file"></i> 10-setup-presto.md</div>
        <pre style="margin:0; font-size:0.85rem; overflow-x:auto; color:#fafafa;"><span style="color:#666; user-select:none;"> 1</span>  # Use Presto to Query LakeSoul&#x27;s Table
<span style="color:#666; user-select:none;"> 2</span>  
<span style="color:#666; user-select:none;"> 3</span>  :::tip
<span style="color:#666; user-select:none;"> 4</span>  Available since version 2.4.
<span style="color:#666; user-select:none;"> 5</span>  :::
<span style="color:#666; user-select:none;"> 6</span>  
<span style="color:#666; user-select:none;"> 7</span>  LakeSoul implements Presto Connector and currently supports reading tables. It can read tables without primary keys and tables with primary keys (including [CDC format tables](04-cdc-ingestion-table.mdx)). When reading, Merge on Read will be automatically executed to obtain the latest data.
<span style="color:#666; user-select:none;"> 8</span>  
<span style="color:#666; user-select:none;"> 9</span>  ## Download Jar package
<span style="color:#666; user-select:none;">10</span>  You can download the Presto package from the Github Release page: https://github.com/lakesoul-io/LakeSoul/releases/download/vVAR::VERSION/lakesoul-presto-presto-0.29-VAR::VERSION.jar
<span style="color:#666; user-select:none;">11</span>  
<span style="color:#666; user-select:none;">12</span>  ## Configure Presto
<span style="color:#666; user-select:none;">13</span>  Create a new lakesoul subdirectory in the plugin subdirectory under the Presto directory. Place the jar downloaded above into this subdirectory.
<span style="color:#666; user-select:none;">14</span>  
<span style="color:#666; user-select:none;">15</span>  Create a new `etc/catalog/lakesoul.properties` file (the specific etc directory location can be modified according to the presto deployment):
<span style="color:#666; user-select:none;">16</span>  ```properties
<span style="color:#666; user-select:none;">17</span>  connector.name=lakesoul
<span style="color:#666; user-select:none;">18</span>  fs.s3a.access.key=minioadmin1
<span style="color:#666; user-select:none;">19</span>  fs.s3a.secret.key=minioadmin1
<span style="color:#666; user-select:none;">20</span>  fs.s3a.bucket=lakesoul-test-bucket
<span style="color:#666; user-select:none;">21</span>  fs.s3a.endpoint=http://minio:9000
<span style="color:#666; user-select:none;">22</span>  ```
<span style="color:#666; user-select:none;">23</span>  The setting items starting with `fs.s3a` are the configuration for accessing S3 and can be modified as needed.
<span style="color:#666; user-select:none;">24</span>  
<span style="color:#666; user-select:none;">25</span>  ## Configure LakeSoul Meta DB Connection
<span style="color:#666; user-select:none;">26</span>  Refer to the method in the [Configure Metadata](01-setup-meta-env.md) document and use environment variables or JVM property to setup connection to meta DB. For example, JVM properties can be configured in [Presto JVM Config](https://prestodb.io/docs/current/installation/deployment.html#jvm-config). Alternatively, use the environment variable `LAKESOUL_PG_URL`. For cluster deployments (such as k8S), it is recommended to use Secret + environment variable reference to configure the metadata PG connection.
<span style="color:#666; user-select:none;">27</span>  
<span style="color:#666; user-select:none;">28</span>  ## Start Presto Client
<span style="color:#666; user-select:none;">29</span>  ```shell
<span style="color:#666; user-select:none;">30</span>  ./bin/presto --catalog lakesoul --schema default
<span style="color:#666; user-select:none;">31</span>  ```
</pre>
        </div>
        </div>

</div>
</main>
</div>
</div>


</body>
</html>

