blob: acb6bf578a0ea619423bf6fe9687f2d57ca01985 [file] [log] [blame]
<!doctype html><html lang=en-US dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-db-connect/arrow-flight-sql-connect" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.6.3"><title data-rh=true>Connecting by Arrow Flight SQL Protocol - Apache Doris</title><meta data-rh=true name=viewport content="width=device-width,initial-scale=1.0"><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:url content=https://doris.apache.org/docs/dev/db-connect/arrow-flight-sql-connect/><meta data-rh=true property=og:locale content=en_US><meta data-rh=true property=og:locale:alternate content=zh_Hans-CN><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docusaurus_version content=current><meta data-rh=true name=docusaurus_tag content=docs-default-current><meta data-rh=true name=docsearch:version content=current><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current><meta data-rh=true property=og:title content="Connecting by Arrow Flight SQL Protocol - Apache Doris"><meta data-rh=true name=description content="Since Doris 2.1, a high-speed data link based on the Arrow Flight SQL protocol has been implemented,"><meta data-rh=true property=og:description content="Since Doris 2.1, a high-speed data link based on the Arrow Flight SQL protocol has been implemented,"><link data-rh=true rel=icon href=/images/favicon.ico><link data-rh=true rel=canonical href=https://doris.apache.org/docs/dev/db-connect/arrow-flight-sql-connect/><link data-rh=true rel=alternate href=https://doris.apache.org/docs/dev/db-connect/arrow-flight-sql-connect/ hreflang=en-US><link data-rh=true rel=alternate href=https://doris.apache.org/zh-CN/docs/dev/db-connect/arrow-flight-sql-connect/ hreflang=zh-Hans-CN><link data-rh=true rel=alternate href=https://doris.apache.org/docs/dev/db-connect/arrow-flight-sql-connect/ hreflang=x-default><link rel=alternate type=application/rss+xml href=/blog/rss.xml title="Apache Doris RSS Feed"><link rel=alternate type=application/atom+xml href=/blog/atom.xml title="Apache Doris Atom Feed"><link rel=preconnect href=https://analytics.apache.org/><script>var _paq=window._paq=window._paq||[];_paq.push(["setRequestMethod","POST"]),_paq.push(["trackPageView"]),_paq.push(["enableLinkTracking"]),_paq.push(["enableHeartBeatTimer"]),function(){var e="https://analytics.apache.org/";_paq.push(["setRequestMethod","POST"]),_paq.push(["setTrackerUrl",e+"matomo.php"]),_paq.push(["setSiteId","43"]);var a=document,t=a.createElement("script"),p=a.getElementsByTagName("script")[0];t.type="text/javascript",t.async=!0,t.src=e+"matomo.js",p.parentNode.insertBefore(t,p)}()</script><link rel=stylesheet href=/css/katex.min.css><script src=/js/custom-script.js></script><script async src=https://widget.kapa.ai/kapa-widget.bundle.js data-website-id=a5fb90df-217a-4097-95c0-80490220314b data-modal-title="Apache Doris AI" data-project-name="Apache Doris Website" data-project-logo=https://cdn.selectdb.com/static/doris_1_3c42247c63.png data-modal-image=https://cdn.selectdb.com/static/doris_logo_only_9617fa366a.png data-project-color=#444FD9 data-modal-disclaimer="This is a custom LLM with access to all [Doris documentation](https://doris.apache.org/docs/4.x/gettingStarted/what-is-apache-doris)." data-consent-required data-consent-screen-disclaimer="By clicking &amp;quot;I agree, let's chat&amp;quot;, you consent to the use of the AI assistant in accordance with kapa.ai's [Privacy Policy](https://www.kapa.ai/content/privacy-policy). This service uses reCAPTCHA, which requires your consent to Google's [Privacy Policy](https://policies.google.com/privacy) and [Terms of Service](https://policies.google.com/terms). By proceeding, you explicitly agree to both kapa.ai's and Google's privacy policies." data-bot-protection-mechanism=hcaptcha></script><link rel=stylesheet href=/assets/css/styles.18db3ef1.css><script src=/assets/js/runtime~main.17a9f8ed.js defer></script><script src=/assets/js/main.b926fde8.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:"light",document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script><div id=__docusaurus><div role=region aria-label="Skip to main content"><a class=skipToContent_fXgn href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top"><div class=navbar__inner><div class=navbar__items><div class=navbar-left><div class="navbar-logo-wrapper flex items-center"><div class="cursor-pointer docs"><svg width=236 height=30 fill=none viewBox="0 0 236 30"><g clip-path=url(#a)><path fill=#15A9CA d="m13.606 4.594-3.274-3.273A4.5 4.5 0 0 0 7.153 0a4.18 4.18 0 0 0-2.92 1.176 4.285 4.285 0 0 0-.06 6.107l5.94 5.94a.68.68 0 0 0 .933 0l2.556-2.557c.16-.192 2.834-3.245.003-6.072"/><path fill=#52CAA3 d="M18.97 9.823c-.624-.604-1.27-1.227-1.855-1.901v-.024q-.031.093-.047.189a6.73 6.73 0 0 1-2.003 3.747c-3.446 3.422-6.93 6.919-10.302 10.302l-.455.45a4.37 4.37 0 0 0-1.336 2.416 4.67 4.67 0 0 0 1.2 3.669 3.92 3.92 0 0 0 3.084 1.325c1.345.02 2-.157 2.98-1.11 3.92-3.837 7.84-7.706 10.807-10.646 1.4-1.392 1.72-3.697.729-5.25a18 18 0 0 0-2.803-3.167"/><path fill=#5268AD d="M-.004 7.774v14.457a.803.803 0 0 0 1.372.569l7.276-7.276a.74.74 0 0 0 0-1.042L1.368 7.206a.78.78 0 0 0-.56-.235.81.81 0 0 0-.812.803"/><path fill=#1D2434 d="M31.748 21.14V8.876h3.638c3.986 0 6.468 2.352 6.468 6.127s-2.481 6.139-6.468 6.139zm1.96-1.755h1.76c2.693 0 4.43-1.717 4.43-4.371s-1.737-4.371-4.43-4.371h-1.76zM50.612 21.33a6.326 6.326 0 1 1 0-12.652 6.326 6.326 0 0 1 0 12.652m0-10.835a4.512 4.512 0 0 0 0 9.016 4.555 4.555 0 0 0 4.45-4.532 4.473 4.473 0 0 0-4.45-4.484M75.056 8.875H73.04v12.254h2.015zM82.474 21.33a9.55 9.55 0 0 1-3.76-.804v-1.803a9.2 9.2 0 0 0 3.76.87c1.568 0 2.615-.717 2.615-1.78 0-1.195-1.278-1.67-2.63-2.171-2.121-.784-3.744-1.54-3.744-3.548 0-2.52 2.281-3.418 4.237-3.418 1.1 0 2.19.205 3.215.603v1.765a9.2 9.2 0 0 0-3.266-.651c-1.505 0-2.18.784-2.18 1.568 0 1.039 1.13 1.454 2.455 1.932 2.313.835 4.077 1.65 4.077 3.842-.008 2.125-1.968 3.595-4.779 3.595M66.026 16.174l.764-.33a3.63 3.63 0 0 0 2.2-3.327c0-2.211-1.592-3.638-4.054-3.638h-4.645V21.14h1.96V10.61h2.477a2.147 2.147 0 0 1 2.278 2.16 2.17 2.17 0 0 1-2.278 2.16h-1.042c-.459.067-.22.46-.22.46l3.956 5.75h2.214z"/></g><path fill=#484E5B d="M228.138 20.965h-1.821V8.935h1.756l5.934 8.665h.098V8.934h1.82v12.031h-1.707l-5.983-8.665h-.097zM219.104 21.193q-1.692 0-2.943-.748t-1.935-2.146q-.666-1.415-.666-3.35 0-1.934.666-3.332.683-1.415 1.935-2.146 1.251-.749 2.943-.748 1.69 0 2.926.748 1.252.731 1.919 2.146.682 1.398.682 3.332 0 1.935-.682 3.35-.667 1.398-1.919 2.146-1.236.747-2.926.748m0-1.756q1.658 0 2.633-1.187.992-1.186.992-3.3 0-1.4-.455-2.407-.439-1.008-1.268-1.528-.813-.537-1.902-.537-1.675 0-2.65 1.187-.976 1.187-.976 3.285 0 2.114.976 3.3.975 1.187 2.65 1.187M211.897 8.934v12.031h-1.853V8.935zM204.154 20.965h-1.87V10.706h-3.658V8.934h9.186v1.772h-3.658zM199.83 20.965h-1.984l-1.317-3.625h-4.308l-1.317 3.625h-1.984l4.488-12.03h1.934zm-5.496-9.446-1.479 4.065h3.04l-1.463-4.065zM186.483 20.965h-1.869V10.706h-3.658V8.934h9.185v1.772h-3.658zM170.935 20.965h-1.821V8.935h1.756l5.934 8.665h.098V8.934h1.821v12.031h-1.707l-5.983-8.665h-.098zM160.569 15.616v3.626h6.032v1.723h-7.885V8.935h7.674v1.739h-5.821v3.219h5.496v1.723zM146.454 20.965h-1.821V8.935h1.772l4.211 6.779h.097l4.211-6.78h1.789v12.031h-1.838V12.43h-.097l-3.496 5.609h-1.235l-3.496-5.593h-.097zM137.64 19.502q1.264 0 2-.816t.736-2.272V8.958h1.904v7.568q0 1.472-.576 2.544a3.9 3.9 0 0 1-1.6 1.648q-1.04.56-2.464.56t-2.464-.56a4 4 0 0 1-1.616-1.648q-.56-1.072-.56-2.544V8.958h1.904v7.392q0 1.472.736 2.32.736.832 2 .832M131.113 18.852a4.8 4.8 0 0 1-1.772 1.707q-1.122.634-2.553.634-1.69 0-2.975-.78-1.284-.782-2-2.196-.699-1.43-.699-3.332 0-1.854.699-3.252.716-1.398 2-2.146 1.284-.764 2.975-.764 1.414 0 2.553.634a4.63 4.63 0 0 1 1.772 1.707l-1.479 1.024a3.4 3.4 0 0 0-1.269-1.187 3.25 3.25 0 0 0-1.593-.422q-1.138 0-1.983.536-.83.537-1.285 1.528-.455.992-.455 2.342 0 1.38.455 2.406.456 1.024 1.301 1.593.845.553 1.967.553.83 0 1.577-.423.765-.439 1.285-1.22zM114.258 21.193q-1.69 0-2.942-.748t-1.935-2.146q-.667-1.415-.667-3.35 0-1.934.667-3.332.682-1.415 1.935-2.146 1.251-.749 2.942-.748 1.692 0 2.927.748 1.252.731 1.918 2.146.684 1.398.683 3.332 0 1.935-.683 3.35-.667 1.398-1.918 2.146-1.235.747-2.927.748m0-1.756q1.659 0 2.634-1.187.992-1.186.992-3.3 0-1.4-.455-2.407-.44-1.008-1.268-1.528-.813-.537-1.903-.537-1.674 0-2.65 1.187-.975 1.187-.975 3.285 0 2.114.975 3.3.976 1.187 2.65 1.187M97.244 20.965V8.935h4.487q1.805 0 3.073.747a4.77 4.77 0 0 1 1.935 2.097q.666 1.35.666 3.17 0 1.821-.699 3.187a4.86 4.86 0 0 1-2.032 2.098q-1.334.73-3.219.731zm4.227-1.756q1.952 0 2.976-1.105 1.023-1.123 1.024-3.154 0-2.032-.992-3.138-.991-1.106-2.878-1.106h-2.503v8.503z"/><defs><clipPath id=a><path fill=#fff d="M0 0h87.244v30H0z"/></clipPath></defs></svg></div></div><div class=undefined><div class="docs-search navbarSearchContainer_dCNk"><div class="navbar__search searchBarContainer_PzyC" dir=ltr><input placeholder=Search aria-label=Search class=navbar__search-input value=""><div class="loadingRing__K5d searchBarLoadingRing_e2f0"><div></div><div></div><div></div><div></div></div></div></div></div></div></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link><svg class=icon-language width=16 height=16 viewBox="0 0 16 16" fill=none><path d="M7.75756 14.3L10.5816 6.91667H11.8759L14.7 14.3H13.4057L12.7501 12.4167H9.74113L9.06873 14.3H7.75756ZM10.1109 11.35H12.3467L11.254 8.3H11.2036L10.1109 11.35ZM2.84908 12.45L1.97498 11.5833L5.11841 8.48333C4.72618 8.05 4.38439 7.60267 4.09302 7.14133C3.80165 6.68044 3.54389 6.19444 3.31976 5.68333H4.61412C4.80463 6.06111 5.00635 6.39711 5.21927 6.69133C5.43219 6.986 5.68434 7.29444 5.97571 7.61667C6.43519 7.12778 6.81621 6.62511 7.11879 6.10867C7.42137 5.59178 7.67352 5.03889 7.87523 4.45H1V3.23333H5.33694V2H6.58087V3.23333H10.9178V4.45H9.11916C8.89503 5.18333 8.59805 5.89155 8.22824 6.57467C7.85842 7.25822 7.39895 7.90555 6.84983 8.51667L8.3459 10.0167L7.87523 11.2833L5.95891 9.38333L2.84908 12.45Z" fill=#4C576C /></svg></a><ul class=dropdown__menu><li><a href=/docs/dev/db-connect/arrow-flight-sql-connect/ rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang=en-US>English</a><li><a href=/zh-CN/docs/dev/db-connect/arrow-flight-sql-connect/ rel="noopener noreferrer" class=dropdown__link lang=zh-Hans-CN>中文</a></ul></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a aria-current=page class="navbar__link active" aria-haspopup=true aria-expanded=false role=button href=/docs/dev/db-connect/arrow-flight-sql-connect/><span class=text-sm>Versions: <!-- -->Dev</span></a><ul class=dropdown__menu><li><a class=dropdown__link href=/docs/4.x/db-connect/arrow-flight-sql-connect/>4.x</a><li><a class=dropdown__link href=/docs/3.x/db-connect/arrow-flight-sql-connect/>3.x</a><li><a class=dropdown__link href=/docs/2.1/db-connect/arrow-flight-sql-connect/>2.1</a><li><a aria-current=page class="dropdown__link dropdown__link--active" href=/docs/dev/db-connect/arrow-flight-sql-connect/>Dev</a><li><a class=dropdown__link href=/archive-docs/>Archived</a></ul></div><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class="header-right-button-primary navbar-download-desktop" href=/download/>Download</a></div></div><div class=navbar__bottom><div class=docs-nav-version-locale><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link type=localeDropdown><svg class=icon-language width=16 height=16 viewBox="0 0 16 16" fill=none><path d="M7.75756 14.3L10.5816 6.91667H11.8759L14.7 14.3H13.4057L12.7501 12.4167H9.74113L9.06873 14.3H7.75756ZM10.1109 11.35H12.3467L11.254 8.3H11.2036L10.1109 11.35ZM2.84908 12.45L1.97498 11.5833L5.11841 8.48333C4.72618 8.05 4.38439 7.60267 4.09302 7.14133C3.80165 6.68044 3.54389 6.19444 3.31976 5.68333H4.61412C4.80463 6.06111 5.00635 6.39711 5.21927 6.69133C5.43219 6.986 5.68434 7.29444 5.97571 7.61667C6.43519 7.12778 6.81621 6.62511 7.11879 6.10867C7.42137 5.59178 7.67352 5.03889 7.87523 4.45H1V3.23333H5.33694V2H6.58087V3.23333H10.9178V4.45H9.11916C8.89503 5.18333 8.59805 5.89155 8.22824 6.57467C7.85842 7.25822 7.39895 7.90555 6.84983 8.51667L8.3459 10.0167L7.87523 11.2833L5.95891 9.38333L2.84908 12.45Z" fill=#4C576C /></svg></a><ul class=dropdown__menu><li><a href=/docs/dev/db-connect/arrow-flight-sql-connect/ rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang=en-US>English</a><li><a href=/zh-CN/docs/dev/db-connect/arrow-flight-sql-connect/ rel="noopener noreferrer" class=dropdown__link lang=zh-Hans-CN>中文</a></ul></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a aria-current=page class="navbar__link active" aria-haspopup=true aria-expanded=false role=button type=docsVersionDropdown href=/docs/dev/db-connect/arrow-flight-sql-connect/><span class=text-sm>Versions: <!-- -->Dev</span></a><ul class=dropdown__menu><li><a class=dropdown__link href=/docs/4.x/db-connect/arrow-flight-sql-connect/>4.x</a><li><a class=dropdown__link href=/docs/3.x/db-connect/arrow-flight-sql-connect/>3.x</a><li><a class=dropdown__link href=/docs/2.1/db-connect/arrow-flight-sql-connect/>2.1</a><li><a aria-current=page class="dropdown__link dropdown__link--active" href=/docs/dev/db-connect/arrow-flight-sql-connect/>Dev</a><li><a class=dropdown__link href=/archive-docs/>Archived</a></ul></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_eExm"><div class=docsWrapper_hBAB><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type=button></button><div class=docRoot_UBD9><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class=sidebarViewport_aRkj><div class=sidebar_mhZE><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_Y1UP menuWithAnnouncementBar_fPny"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/dev/gettingStarted/what-is-apache-doris/>Getting Started</a></div><ul style=display:block;overflow:visible;height:auto class="menu__list menu__list_level_2 community_level_2"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=3 tabindex=0 href=/docs/dev/gettingStarted/what-is-apache-doris/>Introduction to Apache Doris</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=3 tabindex=0 href=/docs/dev/gettingStarted/quick-start/>Quick Start</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/gettingStarted/alternatives/alternative-to-clickhouse/>Tech Alternatives</a></div></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role=button aria-expanded=true href=/docs/dev/install/preparation/env-checking/>Guides</a></div><ul style=display:block;overflow:visible;height:auto class="menu__list menu__list_level_2 community_level_2"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/install/preparation/env-checking/>Installation and Deployment</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role=button aria-expanded=true tabindex=0 href=/docs/dev/db-connect/database-connect/>Database Connection</a></div><ul style=display:block;overflow:visible;height:auto class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link length=2 tabindex=0 href=/docs/dev/db-connect/database-connect/>Connecting by MySQL Protocol</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current=page length=2 tabindex=0 href=/docs/dev/db-connect/arrow-flight-sql-connect/>Connecting by Arrow Flight SQL Protocol</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/table-design/overview/>Data Table Design</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/data-operate/import/load-manual/>Loading Data</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/data-operate/update/update-overview/>Data Update and Delete</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/data-operate/export/export-overview/>Exporting Data</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/query-data/mysql-compatibility/>Data Queries</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/query-acceleration/performance-tuning-overview/tuning-overview/>Queries Acceleration</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/ai/ai-overview/>AI</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/lakehouse/lakehouse-overview/>Data Lakehouse</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/observability/overview/>Observability</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/compute-storage-decoupled/overview/>Compute-Storage Decoupled</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/auth/security-overview/>Security</a></div></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/dev/benchmark/ssb/>Benchmark</a></div><ul style=display:block;overflow:visible;height:auto class="menu__list menu__list_level_2 community_level_2"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=3 tabindex=0 href=/docs/dev/benchmark/ssb/>Star Schema Benchmark</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=3 tabindex=0 href=/docs/dev/benchmark/tpch/>TPC-H Benchmark</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=3 tabindex=0 href=/docs/dev/benchmark/tpcds/>TPC-DS Benchmark</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/dev/admin-manual/cluster-management/upgrade/>Management</a></div><ul style=display:block;overflow:visible;height:auto class="menu__list menu__list_level_2 community_level_2"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/cluster-management/upgrade/>Managing Cluster</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/workload-management/workload-management-summary/>Managing Workload</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/data-admin/overview/>Managing Disaster Recovery</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/log-management/fe-log/>Log Management</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/maint-monitor/metrics/>Maintenance</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/config/config-dir/>Managing Configuration</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/system-tables/overview/>System Tables</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/trouble-shooting/memory-management/overview/>Trouble Shooting</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/admin-manual/open-api/overview/>OPEN API</a></div></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/dev/ecosystem/spark-doris-connector/>Ecosystem</a></div><ul style=display:block;overflow:visible;height:auto class="menu__list menu__list_level_2 community_level_2"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=9 tabindex=0 href=/docs/dev/ecosystem/spark-doris-connector/>Spark Doris Connector</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=9 tabindex=0 href=/docs/dev/ecosystem/flink-doris-connector/>Flink Doris Connector</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=9 tabindex=0 href=/docs/dev/ecosystem/doris-kafka-connector/>Doris Kafka Connector</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/ecosystem/doris-operator/doris-operator-overview/>Doris Operator</a></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=9 tabindex=0 href=/docs/dev/ecosystem/doris-streamloader/>Doris Streamloader</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/ecosystem/bi/apache-superset/>BI</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/ecosystem/bi/clouddm/>SQL Clients</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/ecosystem/observability/logstash/>Observability</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/ecosystem/cloudcanal/>More</a></div></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/dev/faq/install-faq/>FAQ</a></div><ul style=display:block;overflow:visible;height:auto class="menu__list menu__list_level_2 community_level_2"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=7 tabindex=0 href=/docs/dev/faq/install-faq/>Install Error</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=7 tabindex=0 href=/docs/dev/faq/data-faq/>Data Operation Error</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=7 tabindex=0 href=/docs/dev/faq/sql-faq/>SQL Error</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=7 tabindex=0 href=/docs/dev/faq/lakehouse-faq/>Data Lakehouse FAQ</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=7 tabindex=0 href=/docs/dev/faq/bi-faq/>BI FAQ</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=7 tabindex=0 href=/docs/dev/faq/correctness-faq/>Data Integrity FAQ</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=7 tabindex=0 href=/docs/dev/faq/load-faq/>Load FAQ</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/dev/sql-manual/basic-element/sql-data-types/data-type-overview/>Reference</a></div><ul style=display:block;overflow:visible;height:auto class="menu__list menu__list_level_2 community_level_2"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/sql-manual/basic-element/sql-data-types/data-type-overview/>Basic Elements</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/sql-manual/sql-functions/ai-functions/distance-functions/cosine-distance/>SQL Functions</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/sql-manual/sql-statements/data-query/SELECT/>SQL Statements</a></div></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/dev/releasenotes/all-release/>Releases</a></div><ul style=display:block;overflow:visible;height:auto class="menu__list menu__list_level_2 community_level_2"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link length=8 tabindex=0 href=/docs/dev/releasenotes/all-release/>All Releases</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/releasenotes/v4.0/release-4.0.2/>v4.0</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/releasenotes/v3.1/release-3.1.4/>v3.1</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/releasenotes/v3.0/release-3.0.8/>v3.0</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/releasenotes/v2.1/release-2.1.11/>v2.1</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/releasenotes/v2.0/release-2.0.15/>v2.0</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/releasenotes/v1.2/release-1.2.8/>v1.2</a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/dev/releasenotes/v1.1/release-1.1.5/>v1.1</a></div></ul></ul></nav></div></div></aside><main class=docMainContainer_TBSr><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_z5aJ"><div class="theme-doc-version-banner alert alert--warning margin-bottom--md" role=alert><div>This documentation is for an <b>unreleased</b> version of Apache Doris.</div><div class=margin-top--md>For usage, please refer to the official documentation of <b><a href=/docs/4.x/db-connect/arrow-flight-sql-connect/>Version 2.1</a></b> or <b><a href=/docs/3.x/gettingStarted/what-is-apache-doris/>Version 3.x</a></b>.</div></div><div class=docItemContainer_c0TR><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label=Breadcrumbs><ul class=breadcrumbs itemscope itemtype=https://schema.org/BreadcrumbList><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_YNFT><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li class=breadcrumbs__item><span class=breadcrumbs__link>Guides</span><meta itemprop=position content=1><li class=breadcrumbs__item><span class=breadcrumbs__link>Database Connection</span><meta itemprop=position content=2><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link itemprop=name>Connecting by Arrow Flight SQL Protocol</span><meta itemprop=position content=3></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_bxCs"><button type=button class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Connecting by Arrow Flight SQL Protocol</h1></header><p>Since Doris 2.1, a high-speed data link based on the Arrow Flight SQL protocol has been implemented, allowing SQL queries to rapidly retrieve large volumes of data from Doris in multiple languages. Arrow Flight SQL also provides a universal JDBC driver, supporting seamless interaction with databases that also follow the Arrow Flight SQL protocol. In some scenarios, performance can improve by up to a hundred times compared to data transfer solutions using MySQL Client or JDBC/ODBC drivers.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=implementation-principle>Implementation Principle<a href=#implementation-principle class=hash-link aria-label="Direct link to Implementation Principle" title="Direct link to Implementation Principle"></a></h2>
<p>In Doris, query results are organized in columnar format as Blocks. In versions prior to 2.1, data could be transferred to the target client via MySQL Client or JDBC/ODBC drivers, but this required deserializing row-based Bytes into columnar format. By building a high-speed data transfer link based on Arrow Flight SQL, if the target client also supports Arrow columnar format, the entire transfer process avoids serialization and deserialization operations, completely eliminating the time and performance overhead associated with them.</p>
<p><img decoding=async loading=lazy alt="Arrow Flight SQL" src=/assets/images/Arrow_Flight_SQL-c51538bca23f1062d141adab8fe055cb.png width=1280 height=647 class=img_ev3q></p>
<p>To install Apache Arrow, you can find detailed installation instructions in the official documentation <a href=https://arrow.apache.org/install/ target=_blank rel="noopener noreferrer">Apache Arrow</a>. For more information on how Doris implements the Arrow Flight protocol, you can refer to <a href=https://github.com/apache/doris/issues/25514 target=_blank rel="noopener noreferrer">Doris support Arrow Flight SQL protocol</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=python-usage>Python Usage<a href=#python-usage class=hash-link aria-label="Direct link to Python Usage" title="Direct link to Python Usage"></a></h2>
<p>Use Python's ADBC ​​Driver to connect to Doris to achieve extremely fast data reading. The following steps use Python (version >= 3.9) ADBC ​​Driver to perform a series of common database syntax operations, including DDL, DML, setting Session variables, and Show statements.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=install-library>Install Library<a href=#install-library class=hash-link aria-label="Direct link to Install Library" title="Direct link to Install Library"></a></h3>
<p>The library is published on PyPI and can be easily installed in the following ways:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain">pip install adbc_driver_manager</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">pip install adbc_driver_flightsql</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p>Import the following modules/libraries in the code to use the installed Library:</p>
<div class="language-Python language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> adbc_driver_manager</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> adbc_driver_flightsql</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">dbapi </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">as</span><span class="token plain"> flight_sql</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token operator">>></span><span class="token operator">></span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">adbc_driver_manager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">__version__</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token number">1.1</span><span class="token number">.0</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token operator">>></span><span class="token operator">></span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">adbc_driver_flightsql</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">__version__</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token number">1.1</span><span class="token number">.0</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=connect-to-doris>Connect to Doris<a href=#connect-to-doris class=hash-link aria-label="Direct link to Connect to Doris" title="Direct link to Connect to Doris"></a></h3>
<p>Create a client to interact with the Doris Arrow Flight SQL service. You need to provide Doris FE's Host, Arrow Flight Port, login username and password, and perform the following configuration.
Modify the configuration parameters of Doris FE and BE:</p>
<ul>
<li>Modify arrow_flight_sql_port in fe/conf/fe.conf to an available port, such as 8070.</li>
<li>Modify arrow_flight_sql_port in be/conf/be.conf to an available port, such as 8050.</li>
</ul>
<p><code>Note: The arrow_flight_sql_port port number configured in fe.conf and be.conf is different</code></p>
<p>After modifying the configuration and restarting the cluster, searching for <code>Arrow Flight SQL service is started</code> in the fe/log/fe.log file indicates that the Arrow Flight Server of FE has been successfully started; searching for <code>Arrow Flight Service bind to host</code> in the be/log/be.INFO file indicates that the Arrow Flight Server of BE has been successfully started.</p>
<p>Assuming that the Arrow Flight SQL services of FE and BE in the Doris instance will run on ports 8070 and 8050 respectively, and the Doris username/password is "user"/"pass", the connection process is as follows:</p>
<div class="language-Python language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain">conn </span><span class="token operator">=</span><span class="token plain"> flight_sql</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">connect</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">uri</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"grpc://{FE_HOST}:{fe.conf:arrow_flight_sql_port}"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> db_kwargs</span><span class="token operator">=</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> adbc_driver_manager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">DatabaseOptions</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">USERNAME</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">value</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"user"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> adbc_driver_manager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">DatabaseOptions</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">PASSWORD</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">value</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"pass"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor </span><span class="token operator">=</span><span class="token plain"> conn</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p>After the connection is completed, the returned Cursor can be used to interact with Doris through SQL to perform operations such as creating tables, obtaining metadata, importing data, and querying.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=create-a-table-and-get-metadata>Create a table and get metadata<a href=#create-a-table-and-get-metadata class=hash-link aria-label="Direct link to Create a table and get metadata" title="Direct link to Create a table and get metadata"></a></h3>
<p>Pass Query to the cursor.execute() function to execute the table creation and metadata acquisition operations:</p>
<div class="language-Python language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"DROP DATABASE IF EXISTS arrow_flight_sql FORCE;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"create database arrow_flight_sql;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"show databases;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"use arrow_flight_sql;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">"""CREATE TABLE arrow_flight_sql_test</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> (</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k0 INT,</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k1 DOUBLE,</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> K2 varchar(32) NULL DEFAULT "" COMMENT "",</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k3 DECIMAL(27,9) DEFAULT "0",</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k4 BIGINT NULL DEFAULT '10',</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k5 DATE,</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> )</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> DISTRIBUTED BY HASH(k5) BUCKETS 5</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> PROPERTIES("replication_num" = "1");"""</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"show create table arrow_flight_sql_test;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p>If StatusResult returns 0, it means that the Query is executed successfully (the reason for this design is to be compatible with JDBC).</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain"> StatusResult</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 0</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> StatusResult</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 0</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> Database</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 __internal_schema</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">1 arrow_flight_sql</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">.. ...</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">507 udf_auth_db</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">[508 rows x 1 columns]</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> StatusResult</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 0</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> StatusResult</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 0</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> Table Create Table</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 arrow_flight_sql_test CREATE TABLE `arrow_flight_sql_test` (\n `k0`...</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=import-data>Import data<a href=#import-data class=hash-link aria-label="Direct link to Import data" title="Direct link to Import data"></a></h3>
<p>Execute INSERT INTO to import a small amount of test data into the created table:</p>
<div class="language-Python language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">"""INSERT INTO arrow_flight_sql_test VALUES</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('0', 0.1, "ID", 0.0001, 9999999999, '2023-10-21'),</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('1', 0.20, "ID_1", 1.00000001, 0, '2023-10-21'),</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('2', 3.4, "ID_1", 3.1, 123456, '2023-10-22'),</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('3', 4, "ID", 4, 4, '2023-10-22'),</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('4', 122345.54321, "ID", 122345.54321, 5, '2023-10-22');"""</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p>The following proves that the import was successful:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain"> StatusResult</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 0</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p>If you need to import large amounts of data into Doris, you can use pydoris to perform Stream Load.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=execute-a-query>Execute a query<a href=#execute-a-query class=hash-link aria-label="Direct link to Execute a query" title="Direct link to Execute a query"></a></h3>
<p>Then query the table imported above, including operations such as aggregation, sorting, and Set Session Variable.</p>
<div class="language-Python language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"select * from arrow_flight_sql_test order by k0;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"set exec_mem_limit=2000;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"show variables like \"%exec_mem_limit%\";"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"select k5, sum(k1), count(1), avg(k3) from arrow_flight_sql_test group by k5;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetch_df</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p>The result is as follows:</p>
<div class="codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain"> k0 k1 K2 k3 k4 k5</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 0 0.10000 ID 0.000100000 9999999999 2023-10-21</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">1 1 0.20000 ID_1 1.000000010 0 2023-10-21</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">2 2 3.40000 ID_1 3.100000000 123456 2023-10-22</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">3 3 4.00000 ID 4.000000000 4 2023-10-22</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">4 4 122345.54321 ID 122345.543210000 5 2023-10-22</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">[5 rows x 6 columns]</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> StatusResult</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 0</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> Variable_name Value Default_Value Changed</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 exec_mem_limit 2000 2147483648 1</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> k5 Nullable(Float64)_1 Int64_2 Nullable(Decimal(38, 9))_3</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">0 2023-10-22 122352.94321 3 40784.214403333</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">1 2023-10-21 0.30000 2 0.500050005</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">[2 rows x 5 columns]</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p><strong>Note:</strong> To fetch query results, you need to use <code>cursor.fetchallarrow()</code> to return the arrow format, or use <code>cursor.fetch_df()</code> to directly return the pandas dataframe, which will keep the data in column format. Do not use <code>cursor.fetchall()</code>, otherwise the column format data will be converted back to row format, which is essentially the same as using mysql-client. In fact, due to the extra column-to-row conversion operation on the client side, it may be slower than mysql-client.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=complete-code>Complete code<a href=#complete-code class=hash-link aria-label="Direct link to Complete code" title="Direct link to Complete code"></a></h3>
<div class="language-Python language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token comment" style="color:rgb(98, 114, 164)"># Doris Arrow Flight SQL Test</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># step 1, library is released on PyPI and can be easily installed.</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># pip install adbc_driver_manager</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># pip install adbc_driver_flightsql</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> adbc_driver_manager</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> adbc_driver_flightsql</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">dbapi </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">as</span><span class="token plain"> flight_sql</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># step 2, create a client that interacts with the Doris Arrow Flight SQL service.</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Modify arrow_flight_sql_port in fe/conf/fe.conf to an available port, such as 8070.</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># Modify arrow_flight_sql_port in be/conf/be.conf to an available port, such as 8050.</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">conn </span><span class="token operator">=</span><span class="token plain"> flight_sql</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">connect</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">uri</span><span class="token operator">=</span><span class="token string" style="color:rgb(255, 121, 198)">"grpc://{FE_HOST}:{fe.conf:arrow_flight_sql_port}"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> db_kwargs</span><span class="token operator">=</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> adbc_driver_manager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">DatabaseOptions</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">USERNAME</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">value</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"root"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> adbc_driver_manager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">DatabaseOptions</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">PASSWORD</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">value</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">""</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor </span><span class="token operator">=</span><span class="token plain"> conn</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># interacting with Doris via SQL using Cursor</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(80, 250, 123)">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">sql</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"\n### execute query: ###\n "</span><span class="token plain"> </span><span class="token operator">+</span><span class="token plain"> sql</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">sql</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"### result: ###"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">print</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">fetchallarrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">to_pandas</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># step3, execute DDL statements, create database/table, show stmt.</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"DROP DATABASE IF EXISTS arrow_flight_sql FORCE;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"show databases;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"create database arrow_flight_sql;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"show databases;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"use arrow_flight_sql;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">"""CREATE TABLE arrow_flight_sql_test</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> (</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k0 INT,</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k1 DOUBLE,</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> K2 varchar(32) NULL DEFAULT "" COMMENT "",</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k3 DECIMAL(27,9) DEFAULT "0",</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k4 BIGINT NULL DEFAULT '10',</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> k5 DATE,</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> )</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> DISTRIBUTED BY HASH(k5) BUCKETS 5</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> PROPERTIES("replication_num" = "1");"""</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"show create table arrow_flight_sql_test;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># step4, insert into</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)">"""INSERT INTO arrow_flight_sql_test VALUES</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('0', 0.1, "ID", 0.0001, 9999999999, '2023-10-21'),</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('1', 0.20, "ID_1", 1.00000001, 0, '2023-10-21'),</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('2', 3.4, "ID_1", 3.1, 123456, '2023-10-22'),</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('3', 4, "ID", 4, 4, '2023-10-22'),</span><br></span><span class=token-line style=color:#F8F8F2><span class="token triple-quoted-string string" style="color:rgb(255, 121, 198)"> ('4', 122345.54321, "ID", 122345.54321, 5, '2023-10-22');"""</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># step5, execute queries, aggregation, sort, set session variable</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"select * from arrow_flight_sql_test order by k0;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"set exec_mem_limit=2000;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"show variables like \"%exec_mem_limit%\";"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">execute</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"select k5, sum(k1), count(1), avg(k3) from arrow_flight_sql_test group by k5;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)"># step6, close cursor </span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">cursor</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=jdbc-connector-with-arrow-flight-sql>Jdbc Connector with Arrow Flight SQL<a href=#jdbc-connector-with-arrow-flight-sql class=hash-link aria-label="Direct link to Jdbc Connector with Arrow Flight SQL" title="Direct link to Jdbc Connector with Arrow Flight SQL"></a></h2>
<p>The open source JDBC driver of Arrow Flight SQL protocol is compatible with the standard JDBC API, which can be used by most BI tools to access Doris through JDBC and supports high-speed transmission of Apache Arrow data. The usage is similar to connecting to Doris through the JDBC driver of MySQL protocol. You only need to replace the jdbc:mysql protocol in the link URL with the jdbc:arrow-flight-sql protocol. The query results are still returned in the JDBC ResultSet data structure.</p>
<p>POM dependency:</p>
<div class="language-Java language-java codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-java codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">properties</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">arrow</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token generics">version</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token number">17.0</span><span class="token number">.0</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">arrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">version</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">properties</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">dependencies</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">dependency</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">groupId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">org</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">arrow</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">groupId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">artifactId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">flight</span><span class="token operator">-</span><span class="token plain">sql</span><span class="token operator">-</span><span class="token plain">jdbc</span><span class="token operator">-</span><span class="token plain">core</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">artifactId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">version</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">$</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain">arrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">version</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">version</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">dependency</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">dependencies</span><span class="token operator">></span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p><strong>Note:</strong> When using Java 9 or later, you must expose some JDK internal structures by adding <code>--add-opens=java.base/java.nio=ALL-UNNAMED</code> to the Java command, otherwise you may see some errors such as <code>module java.base does not "opens java.nio" to unnamed module</code> or <code>module java.base does not "opens java.nio" to org.apache.arrow.memory.core</code> or <code>java.lang.NoClassDefFoundError: Could not initialize class org.apache.arrow.memory.util.MemoryUtil (Internal; Prepare)</code></p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain"># Directly on the command line</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">$ java --add-opens=java.base/java.nio=ALL-UNNAMED -jar ...</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"># Indirectly via environment variables</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">$ env _JAVA_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED" java -jar ...</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p>If debugging in IntelliJ IDEA, you need to add <code>--add-opens=java.base/java.nio=ALL-UNNAMED</code> in <code>Build and run</code> of <code>Run/Debug Configurations</code>, refer to the picture below:</p>
<p><img decoding=async loading=lazy alt=arrow-flight-sql-IntelliJ src=/assets/images/arrow-flight-sql-IntelliJ-45ab7c8f343f3dab024c6db8a08884f5.png width=2566 height=1458 class=img_ev3q></p>
<p>The connection code example is as follows:</p>
<div class="language-Java language-java codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-java codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> </span><span class="token import namespace">java</span><span class="token import namespace punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token import namespace">sql</span><span class="token import namespace punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token import class-name">Connection</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> </span><span class="token import namespace">java</span><span class="token import namespace punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token import namespace">sql</span><span class="token import namespace punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token import class-name">DriverManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> </span><span class="token import namespace">java</span><span class="token import namespace punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token import namespace">sql</span><span class="token import namespace punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token import class-name">ResultSet</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">import</span><span class="token plain"> </span><span class="token import namespace">java</span><span class="token import namespace punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token import namespace">sql</span><span class="token import namespace punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token import class-name">Statement</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">Class</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">forName</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"org.apache.arrow.driver.jdbc.ArrowFlightJdbcDriver"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">String</span><span class="token plain"> </span><span class="token constant" style="color:rgb(189, 147, 249)">DB_URL</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"jdbc:arrow-flight-sql://{FE_HOST}:{fe.conf:arrow_flight_sql_port}?useServerPrepStmts=false"</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token operator">+</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"&cachePrepStmts=true&useSSL=false&useEncryption=false"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">String</span><span class="token plain"> </span><span class="token constant" style="color:rgb(189, 147, 249)">USER</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"root"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">String</span><span class="token plain"> </span><span class="token constant" style="color:rgb(189, 147, 249)">PASS</span><span class="token plain"> </span><span class="token operator">=</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">""</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">Connection</span><span class="token plain"> conn </span><span class="token operator">=</span><span class="token plain"> </span><span class="token class-name">DriverManager</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">getConnection</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token constant" style="color:rgb(189, 147, 249)">DB_URL</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token constant" style="color:rgb(189, 147, 249)">USER</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token constant" style="color:rgb(189, 147, 249)">PASS</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">Statement</span><span class="token plain"> stmt </span><span class="token operator">=</span><span class="token plain"> conn</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">createStatement</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">ResultSet</span><span class="token plain"> resultSet </span><span class="token operator">=</span><span class="token plain"> stmt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">executeQuery</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"select * from information_schema.tables;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">while</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">resultSet</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">next</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">System</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">out</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">println</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">resultSet</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">toString</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">resultSet</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">stmt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">conn</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=java-usage>Java Usage<a href=#java-usage class=hash-link aria-label="Direct link to Java Usage" title="Direct link to Java Usage"></a></h2>
<p>In addition to using JDBC, similar to Python, JAVA can also create a Driver to read Doris and return data in Arrow format. The following are how to use AdbcDriver and JdbcDriver to connect to Doris Arrow Flight Server.</p>
<p>POM dependency:</p>
<div class="language-Java language-java codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-java codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">properties</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">adbc</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token generics">version</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token number">0.15</span><span class="token number">.0</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">adbc</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">version</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">properties</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">dependencies</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">dependency</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">groupId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">org</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">arrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">adbc</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">groupId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">artifactId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">adbc</span><span class="token operator">-</span><span class="token plain">driver</span><span class="token operator">-</span><span class="token plain">jdbc</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">artifactId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">version</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">$</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain">adbc</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">version</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">version</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">dependency</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">dependency</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">groupId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">org</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">arrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">adbc</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">groupId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">artifactId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">adbc</span><span class="token operator">-</span><span class="token plain">core</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">artifactId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">version</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">$</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain">adbc</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">version</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">version</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">dependency</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">dependency</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">groupId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">org</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">arrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">adbc</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">groupId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">artifactId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">adbc</span><span class="token operator">-</span><span class="token plain">driver</span><span class="token operator">-</span><span class="token plain">manager</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">artifactId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">version</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">$</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain">adbc</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">version</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">version</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">dependency</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">dependency</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">groupId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">org</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">arrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">adbc</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">groupId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">artifactId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">adbc</span><span class="token operator">-</span><span class="token plain">sql</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">artifactId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">version</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">$</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain">adbc</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">version</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">version</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">dependency</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">dependency</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">groupId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">org</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">apache</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">arrow</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">adbc</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">groupId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">artifactId</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">adbc</span><span class="token operator">-</span><span class="token plain">driver</span><span class="token operator">-</span><span class="token plain">flight</span><span class="token operator">-</span><span class="token plain">sql</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">artifactId</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics">version</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain">$</span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain">adbc</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">version</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">version</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">dependency</span><span class="token operator">></span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token operator">&lt;</span><span class="token operator">/</span><span class="token plain">dependencies</span><span class="token operator">></span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=adbc-driver>ADBC Driver<a href=#adbc-driver class=hash-link aria-label="Direct link to ADBC Driver" title="Direct link to ADBC Driver"></a></h3>
<p>The connection code example is as follows:</p>
<div class="language-Java language-java codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-java codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token comment" style="color:rgb(98, 114, 164)">// 1. new driver</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">final</span><span class="token plain"> </span><span class="token class-name">BufferAllocator</span><span class="token plain"> allocator </span><span class="token operator">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">new</span><span class="token plain"> </span><span class="token class-name">RootAllocator</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">FlightSqlDriver</span><span class="token plain"> driver </span><span class="token operator">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">new</span><span class="token plain"> </span><span class="token class-name">FlightSqlDriver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">allocator</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">Map</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics class-name">String</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token generics"> </span><span class="token generics class-name">Object</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"> parameters </span><span class="token operator">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">new</span><span class="token plain"> </span><span class="token class-name">HashMap</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcDriver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token constant" style="color:rgb(189, 147, 249)">PARAM_URI</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">set</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">parameters</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token class-name">Location</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">forGrpcInsecure</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"{FE_HOST}"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain">fe</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">conf</span><span class="token operator">:</span><span class="token plain">arrow_flight_sql_port</span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">getUri</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">toString</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcDriver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token constant" style="color:rgb(189, 147, 249)">PARAM_USERNAME</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">set</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">parameters</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"root"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcDriver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token constant" style="color:rgb(189, 147, 249)">PARAM_PASSWORD</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">set</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">parameters</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">""</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcDatabase</span><span class="token plain"> adbcDatabase </span><span class="token operator">=</span><span class="token plain"> driver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">open</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">parameters</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// 2. new connection</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcConnection</span><span class="token plain"> connection </span><span class="token operator">=</span><span class="token plain"> adbcDatabase</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">connect</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcStatement</span><span class="token plain"> stmt </span><span class="token operator">=</span><span class="token plain"> connection</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">createStatement</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// 3. execute query</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">stmt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">setSqlQuery</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"select * from information_schema.tables;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">QueryResult</span><span class="token plain"> queryResult </span><span class="token operator">=</span><span class="token plain"> stmt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">executeQuery</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">ArrowReader</span><span class="token plain"> reader </span><span class="token operator">=</span><span class="token plain"> queryResult</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">getReader</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// 4. load result</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">List</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics class-name">String</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"> result </span><span class="token operator">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">new</span><span class="token plain"> </span><span class="token class-name">ArrayList</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">while</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">reader</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">loadNextBatch</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">VectorSchemaRoot</span><span class="token plain"> root </span><span class="token operator">=</span><span class="token plain"> reader</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">getVectorSchemaRoot</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">String</span><span class="token plain"> tsvString </span><span class="token operator">=</span><span class="token plain"> root</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">contentToTSVString</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> result</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">add</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">tsvString</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">System</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">out</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">printf</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"batchs %d\n"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> result</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">size</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token comment" style="color:rgb(98, 114, 164)">// 5. close</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">reader</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">queryResult</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">stmt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">connection</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=jdbc-driver>JDBC Driver<a href=#jdbc-driver class=hash-link aria-label="Direct link to JDBC Driver" title="Direct link to JDBC Driver"></a></h3>
<p>When using Java 9 or later, some JDK internals must be exposed by adding --add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED to the java command:</p>
<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-shell codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain"># Directly on the command line</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">$ java --add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED -jar ...</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"># Indirectly via environment variables</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">$ env _JAVA_OPTIONS="--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED" java -jar ...</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<p>Otherwise, you may see some errors such as <code>module java.base does not "opens java.nio" to unnamed module</code> or <code>module java.base does not "opens java.nio" to org.apache.arrow.memory.core</code> or <code>ava.lang.NoClassDefFoundError: Could not initialize class org.apache.arrow.memory.util.MemoryUtil (Internal; Prepare)</code></p>
<p>If you debug in IntelliJ IDEA, you need to add <code>--add-opens=java.base/java.nio=ALL-UNNAMED</code> in <code>Build and run</code> of <code>Run/Debug Configurations</code>, refer to the picture below:</p>
<p><img decoding=async loading=lazy src=https://github.com/user-attachments/assets/7439ee6d-9013-40bf-89af-0365925d3fdb alt="IntelliJ IDEA" class=img_ev3q></p>
<p>The connection code example is as follows:</p>
<div class="language-Java language-java codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-java codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">final</span><span class="token plain"> </span><span class="token class-name">Map</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics class-name">String</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token generics"> </span><span class="token generics class-name">Object</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"> parameters </span><span class="token operator">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">new</span><span class="token plain"> </span><span class="token class-name">HashMap</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcDriver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token constant" style="color:rgb(189, 147, 249)">PARAM_URI</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">set</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> parameters</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token string" style="color:rgb(255, 121, 198)">"jdbc:arrow-flight-sql://{FE_HOST}:{fe.conf:arrow_flight_sql_port}?useServerPrepStmts=false&cachePrepStmts=true&useSSL=false&useEncryption=false"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcDriver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token constant" style="color:rgb(189, 147, 249)">PARAM_USERNAME</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">set</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">parameters</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">"root"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token class-name">AdbcDriver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token constant" style="color:rgb(189, 147, 249)">PARAM_PASSWORD</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">set</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">parameters</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> </span><span class="token string" style="color:rgb(255, 121, 198)">""</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">try</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">BufferAllocator</span><span class="token plain"> allocator </span><span class="token operator">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">new</span><span class="token plain"> </span><span class="token class-name">RootAllocator</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">AdbcDatabase</span><span class="token plain"> db </span><span class="token operator">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">new</span><span class="token plain"> </span><span class="token class-name">JdbcDriver</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">allocator</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">open</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">parameters</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">AdbcConnection</span><span class="token plain"> connection </span><span class="token operator">=</span><span class="token plain"> db</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">connect</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">AdbcStatement</span><span class="token plain"> stmt </span><span class="token operator">=</span><span class="token plain"> connection</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">createStatement</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> stmt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">setSqlQuery</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"select * from information_schema.tables;"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">AdbcStatement</span><span class="token class-name punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token class-name">QueryResult</span><span class="token plain"> queryResult </span><span class="token operator">=</span><span class="token plain"> stmt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">executeQuery</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">ArrowReader</span><span class="token plain"> reader </span><span class="token operator">=</span><span class="token plain"> queryResult</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">getReader</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">List</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics class-name">String</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token plain"> result </span><span class="token operator">=</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">new</span><span class="token plain"> </span><span class="token class-name">ArrayList</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">&lt;</span><span class="token generics punctuation" style="color:rgb(248, 248, 242)">></span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">while</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">reader</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">loadNextBatch</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">VectorSchemaRoot</span><span class="token plain"> root </span><span class="token operator">=</span><span class="token plain"> reader</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">getVectorSchemaRoot</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">String</span><span class="token plain"> tsvString </span><span class="token operator">=</span><span class="token plain"> root</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">contentToTSVString</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> result</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">add</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token plain">tsvString</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">long</span><span class="token plain"> etime </span><span class="token operator">=</span><span class="token plain"> </span><span class="token class-name">System</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">currentTimeMillis</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> </span><span class="token class-name">System</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token plain">out</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">printf</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token string" style="color:rgb(255, 121, 198)">"batchs %d\n"</span><span class="token punctuation" style="color:rgb(248, 248, 242)">,</span><span class="token plain"> result</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">size</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> reader</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> queryResult</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> stmt</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">close</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(189, 147, 249);font-style:italic">catch</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token class-name">Exception</span><span class="token plain"> e</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">{</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"> e</span><span class="token punctuation" style="color:rgb(248, 248, 242)">.</span><span class="token function" style="color:rgb(80, 250, 123)">printStackTrace</span><span class="token punctuation" style="color:rgb(248, 248, 242)">(</span><span class="token punctuation" style="color:rgb(248, 248, 242)">)</span><span class="token punctuation" style="color:rgb(248, 248, 242)">;</span><span class="token plain"></span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">}</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=choice-of-jdbc-and-java-connection-methods>Choice of Jdbc and Java connection methods<a href=#choice-of-jdbc-and-java-connection-methods class=hash-link aria-label="Direct link to Choice of Jdbc and Java connection methods" title="Direct link to Choice of Jdbc and Java connection methods"></a></h3>
<p><a href=https://github.com/apache/doris/blob/master/samples/arrow-flight-sql/java/README.md target=_blank rel="noopener noreferrer">JDBC/Java Arrow Flight SQL Sample</a> is a JDBC/Java demo using Arrow FLight SQL. You can use it to test various connection methods for sending queries to Arrow Flight Server, helping you understand how to use Arrow FLight SQL and test performance. For expected execution results, see <a href=https://github.com/apache/doris/pull/45306 target=_blank rel="noopener noreferrer">Add Arrow Flight Sql demo for Java</a>.</p>
<p>Compared with the traditional <code>jdbc:mysql</code> connection method, the performance test of the Arrow Flight SQL connection method of Jdbc and Java can be found in Section 6.2 of <a href=https://github.com/apache/doris/issues/25514 target=_blank rel="noopener noreferrer">GitHub Issue</a>. Here are some usage suggestions based on the test conclusions.</p>
<ol>
<li>
<p>For the above three Java Arrow Flight SQL connection methods, if the subsequent data analysis will be based on the row-based data format, then use jdbc:arrow-flight-sql, which will return data in the JDBC ResultSet format; if the subsequent data analysis can be based on the Arrow format or other column-based data formats, then use Flight AdbcDriver or Flight JdbcDriver to directly return data in the Arrow format, which will avoid row-column conversion and use the characteristics of Arrow to accelerate data parsing.</p>
</li>
<li>
<p>Whether parsing data in JDBC ResultSet or Arrow format, the time spent is longer than the time spent reading data. If the performance of Arrow Flight SQL is not as expected and the improvement is limited compared with <code>jdbc:mysql://</code>, you may want to analyze whether it takes too long to parse the data.</p>
</li>
<li>
<p>For all connection methods, JDK 17 reads data faster than JDK 1.8.</p>
</li>
<li>
<p>When reading a large amount of data, Arrow Flight SQL will use less memory than <code>jdbc:mysql://</code>, so if you are troubled by insufficient memory, you can also try Arrow Flight SQL.</p>
</li>
<li>
<p>In addition to the above three connection methods, you can also use the native FlightClient to connect to Arrow Flight Server, which can read multiple endpoints in parallel more flexibly. Flight AdbcDriver is also a link created based on FlightClient, which is simpler than using FlightClient directly.</p>
</li>
</ol>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=interaction-with-other-big-data-components>Interaction with other big data components<a href=#interaction-with-other-big-data-components class=hash-link aria-label="Direct link to Interaction with other big data components" title="Direct link to Interaction with other big data components"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=spark--flink>Spark & ​​Flink<a href=#spark--flink class=hash-link aria-label="Direct link to Spark & ​​Flink" title="Direct link to Spark & ​​Flink"></a></h3>
<p>Arrow Flight currently has no official plan to support Spark and Flink (<a href=https://github.com/apache/arrow-adbc/issues/1490 target=_blank rel="noopener noreferrer">GitHub Issue</a>). Since version 24.0.0, Doris' own <a href=https://github.com/apache/doris-spark-connector target=_blank rel="noopener noreferrer">Spark Connector</a> and <a href=https://github.com/apache/doris-flink-connector target=_blank rel="noopener noreferrer">Flink Connector</a> have supported accessing Doris via Arrow Flight SQL, and it is expected that this will improve the reading performance several times.</p>
<p>The community previously referred to the open source <a href=https://github.com/qwshen/spark-flight-connector target=_blank rel="noopener noreferrer">Spark-Flight-Connector</a> and used FlightClient in Spark to connect to Doris for testing. It was found that the data format conversion between Arrow and Doris Block is faster, which is 10 times the conversion speed between CSV format and Doris Block, and it has better support for complex types such as Map and Array. This is because the Arrow data format has a high compression rate and low network overhead during transmission. However, Doris Arrow Flight has not yet implemented multi-node parallel reading. It still aggregates query results to a BE node and returns them. For simple batch export of data, the performance may not be as fast as Doris Spark Connector, which supports Tablet-level parallel reading. If you want to use Arrow Flight SQL to connect to Doris in Spark, you can refer to the open-sourced <a href=https://github.com/qwshen/spark-flight-connector target=_blank rel="noopener noreferrer">Spark-Flight-Connector</a> and <a href=https://github.com/dremio-hub/dremio-flight-connector target=_blank rel="noopener noreferrer">Dremio-Flight-Connector</a> to implement it yourself.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=support-bi-tools>Support BI tools<a href=#support-bi-tools class=hash-link aria-label="Direct link to Support BI tools" title="Direct link to Support BI tools"></a></h3>
<p>Since Doris v2.1.8, BI tools such as DBeaver are supported to connect to Doris using the <code>arrow-flight-sql</code> protocol. For DBeaver's method of connecting to Doris using the <code>arrow-flight-sql</code> Driver, refer to: <a href=https://www.dremio.com/blog/jdbc-driver-for-arrow-flight-sql/#h-how-to-use-jdbc-driver-with-dbeaver-client target=_blank rel="noopener noreferrer">how-to-use-jdbc-driver-with-dbeaver-client</a>, <a href="https://docs.dremio.com/current/sonar/client-applications/clients/dbeaver/?_gl=1*1epgwh0*_gcl_au*MjUyNjE1ODM0LjE3MzQwMDExNDg" target=_blank rel="noopener noreferrer">client-applications/clients/dbeaver/</a>.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=extended-application>Extended Application<a href=#extended-application class=hash-link aria-label="Direct link to Extended Application" title="Direct link to Extended Application"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=multiple-bes-return-results-in-parallel>Multiple BEs return results in parallel<a href=#multiple-bes-return-results-in-parallel class=hash-link aria-label="Direct link to Multiple BEs return results in parallel" title="Direct link to Multiple BEs return results in parallel"></a></h3>
<p>Doris will aggregate the results of a query on all BE nodes to one BE node by default. In Mysql/JDBC queries, FE will request query results from this aggregated data node. In Arrow Flight SQL queries, FE will wrap the IP/Port of this node in the Endpoint and return it to ADBC ​​Client. ADBC ​​Client will request the BE node corresponding to this Endpoint to pull data.</p>
<p>If the query is just a simple Select to pull data from Doris, without Join, Sort, Window Function and other operators with data Shuffle behavior, the query can be split according to Tablet granularity. Now Doris Spark/Flink Connector uses this method to implement parallel data reading, which is divided into two steps:</p>
<ol>
<li>Execute <code>explain sql</code>, and the ScanOperator in the query plan returned by FE contains all Tablet ID Lists of Scan.</li>
<li>Split the original SQL into multiple SQLs based on the Tablet ID List above. Each SQL only reads part of the Tablet. The usage is similar to <code>SELECT * FROM t1 TABLET(10001,10002) limit 1000;</code>. The multiple SQLs after splitting can be executed in parallel. Refer to <a href=https://github.com/apache/doris/pull/10170 target=_blank rel="noopener noreferrer">Support select table sample</a>.</li>
</ol>
<p>If the outermost layer of the query is aggregation, the SQL is similar to <code>select k1, sum(k2) from xxx group by k1</code>. After Doris v3.0.4, execute <code>set enable_parallel_result_sink=true;</code> to allow each BE node of a query to return query results independently. After receiving the Endpoint list returned by FE, ADBC ​​Client pulls results from multiple BE nodes in parallel. However, please note that when the aggregation result is very small, returning multiple BEs will increase the pressure on RPC. For specific implementation, please refer to <a href=https://github.com/apache/doris/pull/36053 target=_blank rel="noopener noreferrer">support parallel result sink</a>. In theory, except for the outermost query which is sorted, other queries can support each BE node to return results in parallel, but there is no need for this convenience at present, and no further implementation has been made.</p>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=multiple-bes-share-the-same-ip-accessible-from-outside-the-cluster>Multiple BEs share the same IP accessible from outside the cluster<a href=#multiple-bes-share-the-same-ip-accessible-from-outside-the-cluster class=hash-link aria-label="Direct link to Multiple BEs share the same IP accessible from outside the cluster" title="Direct link to Multiple BEs share the same IP accessible from outside the cluster"></a></h3>
<p>If there is a Doris cluster, its FE nodes can be accessed from outside the cluster, and all its BE nodes can only be accessed from within the cluster. This is fine when using Mysql Client and JDBC to connect to Doris to execute queries, and the query results will be returned by the Doris FE node. However, using Arrow Flight SQL to connect to Doris will not work because the ADBC ​​Client needs to connect to the Doris BE node to pull the query results, but the Doris BE node is not allowed to be accessed from outside the cluster.</p>
<p>In a production environment, it is often inconvenient to expose the Doris BE node outside the cluster. However, you can add a reverse proxy (such as Nginx) to all Doris BE nodes. When the client outside the cluster connects to Nginx, it will be randomly routed to a Doris BE node. By default, the Arrow Flight SQL query results will be randomly saved on a Doris BE node. If it is different from the Doris BE node randomly routed by Nginx, data forwarding is required within the Doris BE node.</p>
<p>Starting from Doris v2.1.8, you can configure <code>public_host</code> and <code>arrow_flight_sql_proxy_port</code> in <code>be.conf</code> of all Doris BE nodes to the IP and port shared by multiple Doris BE nodes and accessible outside the cluster. The query results can be correctly forwarded and returned to the ADBC ​​Client.</p>
<div class="language-conf codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#F8F8F2;--prism-background-color:#282A36><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-conf codeBlock_bY9V thin-scrollbar" style=color:#F8F8F2;background-color:#282A36><code class=codeBlockLines_e6Vv><span class=token-line style=color:#F8F8F2><span class="token plain">public_host={nginx ip}</span><br></span><span class=token-line style=color:#F8F8F2><span class="token plain">arrow_flight_sql_proxy_port={nginx port}</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=faq>FAQ<a href=#faq class=hash-link aria-label="Direct link to FAQ" title="Direct link to FAQ"></a></h2>
<ol>
<li>Q: Error <code>connection error: desc = "transport: Error while dialing: dial tcp &lt;ip:arrow_flight_port>: i/o timeout"</code>.</li>
</ol>
<p>A: If <code>&lt;ip:arrow_flight_port></code> in the error message is the IP and arrow-flight-port of the Doris FE node,</p>
<p>First check whether the arrow-flight-server of the Doris FE node is started normally. Searching for <code>Arrow Flight SQL service is started</code> in the fe/log/fe.log file indicates that the Arrow Flight Server of FE is started successfully.</p>
<p>If the arrow-flight-server of the Doris FE node is started normally, check whether the machine where the Client is located can <code>ping</code> the IP in the error message <code>&lt;ip:arrow_flight_port></code>. If it cannot be <code>ping</code>ed, you need to open an externally accessible IP for the Doris FE node and redeploy the cluster.</p>
<p>A: If the <code>&lt;ip:arrow_flight_port></code> in the error message is the IP and arrow-flight-port of the Doris BE node.</p>
<p>First check whether the arrow-flight-server of the Doris BE node is started normally. Searching for <code>Arrow Flight Service bind to host</code> in the be/log/be.INFO file indicates that the Arrow Flight Server of BE is started successfully.</p>
<p>If the arrow-flight-server of the Doris BE node starts normally, check whether the client machine can <code>ping</code> the IP in the <code>&lt;ip:arrow_flight_port></code> reported in the error message. If it cannot be <code>ping</code>, if it is known that the Doris BE node is in an intranet that cannot be accessed externally, the following two methods are used:</p>
<ul>
<li>
<p>Consider opening an externally accessible IP for each Doris BE node. Starting from Doris v2.1.8, you can configure <code>public_host</code> to this IP in the <code>be.conf</code> of this Doris BE node. Similarly, configure the <code>public_host</code> of all Doris BE nodes to the IP of the corresponding BE node that can be accessed by the client.</p>
</li>
<li>
<p>Refer to the above section [Multiple BEs share the same IP that can be accessed externally by the cluster] to add a layer of reverse proxy for all Doris BE nodes.</p>
</li>
</ul>
<p>If it is not clear whether Doris BE is completely in the intranet, check the connectivity between the client machine and other IPs of the machine where the Doris BE node is located. Execute <code>ifconfig</code> on the machine where the Doris BE node is located to return all the IPs of the current machine. One of the IPs should be the same as the IP in <code>&lt;ip:arrow_flight_port></code> and the same as the IP of the Doris BE node printed by <code>show backends</code>. <code>ping</code> the other IPs returned by <code>ifconfig</code> in turn. If the Doris BE node has an IP that can be accessed by the Client, refer to the above to configure this IP as <code>public_host</code>. If all IPs of the Doris BE node cannot be accessed by the Client, then the Doris BE node is completely in the intranet.</p>
<ol start=2>
<li>Q: When using JDBC or JAVA to connect to Arrow Flight SQL, an error message appears: <code>module java.base does not "opens java.nio" to unnamed module</code> or <code>module java.base does not "opens java.nio" to org.apache.arrow.memory.core</code> or <code>java.lang.NoClassDefFoundError: Could not initialize class org.apache.arrow.memory.util.MemoryUtil (Internal; Prepare)</code></li>
</ol>
<p>A: First check whether <code>JAVA_OPTS_FOR_JDK_17</code> in fe/conf/fe.conf contains <code>--add-opens=java.base/java.nio=ALL-UNNAMED</code>. If not, add it. Then refer to the notes in [JDBC Connector with Arrow Flight SQL] above and add <code>--add-opens=java.base/java.nio=ALL-UNNAMED</code> in the Java command. If debugging in IntelliJ IDEA, you need to add <code>--add-opens=java.base/java.nio=ALL-UNNAMED</code> in <code>Build and run</code> of <code>Run/Debug Configurations</code>.</p>
<ol start=3>
<li>Q: The ARM environment reports an error <code>get flight info statement failed, arrow flight schema timeout, TimeoutException: Waited 5000 milliseconds for io.grpc.stub.Client</code>.</li>
</ol>
<p>A: If the Linux kernel version is &lt;= 4.19.90, you need to upgrade to 4.19.279 or above, or recompile Doris BE in the environment of the lower version of the Linux kernel. For specific compilation methods, refer to the document &lt;docs/dev/install/source-install/compilation-arm></p>
<p>Cause: This is because there is a compatibility issue between the old version of the Linux kernel and Arrow. <code>cpp: arrow::RecordBatch::MakeEmpty()</code> will get stuck when constructing Arrow Record Batch, causing Doris BE's Arrow Flight Server to fail to respond to Doris FE's Arrow Flight Server's RPC request within 5000ms, causing FE to return rpc timeout failed to Client. When Spark and Flink read Doris, they also convert the query results into Arrow Record Batch and return them, so the same problem exists.</p>
<p>The Linux kernel version of kylinv10 SP2 and SP3 is only 4.19.90-24.4.v2101.ky10.aarch64 at most. The kernel version cannot be upgraded further. Doris BE can only be recompiled on kylinv10. If the problem still exists after compiling Doris BE with the new version of ldb_toolchain, you can try to compile it with the lower version of ldb_toolchain v0.17. If your ARM environment cannot connect to the external network, Huawei Cloud provides ARM + kylinv10, and Alibaba Cloud provides x86 + kylinv10</p>
<ol start=4>
<li>Q: Prepared statement passes parameters and reports errors.</li>
</ol>
<p>A: Currently, <code>jdbc:arrow-flight-sql</code> and Java ADBC/JDBCDriver do not support prepared statement parameter passing. For example, <code>select * from xxx where id=?</code> will report an error <code>parameter ordinal 1 out of range</code>. This is a bug in Arrow Flight SQL (<a href=https://github.com/apache/arrow/issues/40118 target=_blank rel="noopener noreferrer">GitHub Issue</a>).</p>
<ol start=5>
<li>Q: How to modify the batch size read by <code>jdbc:arrow-flight-sql</code> each time to improve performance in some scenarios.</li>
</ol>
<p>A: By modifying <code>setTargetBatchSize</code> in the <code>makeJdbcConfig</code> method in the <code>org.apache.arrow.adbc.driver.jdbc.JdbcArrowReader</code> file, the default is 1024, and then saving the modified file to the local directory with the same path name, so as to overwrite the original file and take effect.</p>
<ol start=6>
<li>Q: ADBC ​​v0.10, JDBC and Java ADBC/JDBCDriver do not support parallel reading.</li>
</ol>
<p>A: The <code>stmt.executePartitioned()</code> method is not implemented. You can only use the native FlightClient to implement parallel reading of multiple endpoints, using the method <code>sqlClient=new FlightSqlClient, execute=sqlClient.execute(sql), endpoints=execute.getEndpoints(), for(FlightEndpoint endpoint: endpoints)</code>. In addition, the default AdbcStatement of ADBC ​​V0.10 is actually JdbcStatement. After executeQuery, the row-format JDBC ResultSet is converted back to the Arrow column format. It is expected that Java ADBC ​​will be fully functional by ADBC ​​1.0.0 <a href=https://github.com/apache/arrow-adbc/issues/1490 target=_blank rel="noopener noreferrer">GitHub Issue</a>.</p>
<ol start=7>
<li>Q: Specify the database name in the URL.</li>
</ol>
<p>A: As of Arrow v15.0, Arrow JDBC Connector does not support specifying database name in URL. For example, specifying connection to <code>test</code> database in <code>jdbc:arrow-flight-sql://{FE_HOST}:{fe.conf:arrow_flight_sql_port}/test?useServerPrepStmts=false</code> is invalid, and you can only execute SQL <code>use database</code> manually. Arrow v18.0 supports specifying database name in URL, but there are still bugs in actual testing.</p>
<ol start=8>
<li>Q: Python ADBC ​​prints <code>Warning: Cannot disable autocommit; conn will not be DB-API 2.0 compliant</code>.</li>
</ol>
<p>A: Ignore this Warning when using Python. This is a problem with Python ADBC ​​Client and will not affect queries.</p>
<ol start=9>
<li>Q: Python reports an error <code>grpc: received message larger than max (20748753 vs. 16777216)</code>.</li>
</ol>
<p>A: Refer to <a href=https://github.com/apache/arrow-adbc/issues/2078 target=_blank rel="noopener noreferrer">Python: grpc: received message larger than max (20748753 vs. 16777216) #2078</a> and add <code>adbc_driver_flightsql.DatabaseOptions.WITH_MAX_MSG_SIZE.value</code> in Database Option.</p>
<ol start=10>
<li>Q: Error <code>invalid bearer token</code> is reported.</li>
</ol>
<p>A: Execute <code>SET PROPERTY FOR 'root' 'max_user_connections' = '10000';</code> to change the current maximum number of connections for the current user to 10000; add qe_max_connection=30000 and arrow_flight_token_cache_size=8000 in <code>fe.conf</code> and restart FE.</p>
<p>The connection between the ADBC ​​Client and the Arrow Flight Server is essentially a long link, which requires Auth Token, Connection, and Session to be cached on the Server. After the connection is created, it will not be disconnected immediately at the end of a single query. The Client needs to send a close() request to clean it up, but in fact, the Client often does not send a close request, so the Auth Token, Connection, and Session will be saved on the Arrow Flight Server for a long time. By default, they will time out and disconnect after 3 days, or be eliminated according to LRU after the number of connections exceeds the limit of <code>arrow_flight_token_cache_size</code>.</p>
<p>As of Doris v2.1.8, Arrow Flight connections and Mysql/JDBC connections use the same connection limit, including the total number of connections of all FE users <code>qe_max_connection</code> and the number of connections of a single user <code>max_user_connections</code> in <code>UserProperty</code>. But the default <code>qe_max_connection</code> and <code>max_user_connections</code> are 1024 and 100 respectively. Arrow Flight SQL is often used to replace JDBC scenarios, but the JDBC connection will be released immediately after the query ends. Therefore, when using Arrow Flight SQL, the default connection limit of Doris is too small, which often causes the connection number to exceed the limit of <code>arrow_flight_token_cache_size</code> and the connections still in use to be eliminated.</p>
<ol start=11>
<li>Q: Using JDBC or JAVA to connect Arrow Flight SQL to read Datatime type returns a timestamp instead of a formatted time.</li>
</ol>
<p>A: Using JDBC or JAVA to connect Arrow Flight SQL to read Datatime type requires converting the timestamp yourself, refer to <a href=https://github.com/apache/doris/pull/48578 target=_blank rel="noopener noreferrer">Add java parsing datetime type in arrow flight sql sample #48578</a>. Using Python Arrow Flight SQL to read Datatime type returns the result of <code>2025-03-03 17:23:28Z</code>, while JDBC or JAVA returns <code>1740993808</code>.</p>
<ol start=12>
<li>Q: Using JDBC or Java JDBC Client to connect Arrow Flight SQL to read Array nested type returns an error <code>Configuration does not provide a mapping for array column 2</code>.</li>
</ol>
<p>A: Refer to <a href=https://github.com/apache/doris/blob/master/samples/arrow-flight-sql/java/src/main/java/doris/arrowflight/demo/FlightAdbcDriver.java target=_blank rel="noopener noreferrer"><code>sample/arrow-flight-sql</code></a> to use JAVA ADBC ​​Client.</p>
<p>Python ADBC ​​Client, JAVA ADBC ​​Client, and Java JDBC DriverManager are all OK for reading Array nested types. Only when JDBC or Java JDBC Client is used to connect to Arrow Flight SQL, there is a problem. In fact, the compatibility of Arrow Flight JDBC is not guaranteed. It is not officially developed by Arrow, but by a third-party database company Dremio. Other compatibility issues have been found before, so it is recommended to use JAVA ADBC ​​Client first.</p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=21-release-note>2.1 Release Note<a href=#21-release-note class=hash-link aria-label="Direct link to 2.1 Release Note" title="Direct link to 2.1 Release Note"></a></h2>
<blockquote>
<p>Doris Arrow Flight is not perfect in versions v2.1.4 and earlier, so it is recommended to upgrade before use.</p>
</blockquote>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v219>v2.1.9<a href=#v219 class=hash-link aria-label="Direct link to v2.1.9" title="Direct link to v2.1.9"></a></h3>
<ol>
<li>Fix the problem of Doris data serialization to Arrow.
<a href=https://github.com/apache/doris/pull/48944 target=_blank rel="noopener noreferrer">Fix UT DataTypeSerDeArrowTest of Array/Map/Struct/Bitmap/HLL/Decimal256 types</a></li>
</ol>
<ul>
<li>Failed to read <code>Decimal256</code> type;</li>
<li>Subtle error in reading <code>DatetimeV2</code> type;</li>
<li>Incorrect result in reading <code>DateV2</code> type;</li>
<li>Error when reading <code>IPV4/IPV6</code> type result is NULL;</li>
</ul>
<ol start=2>
<li>Fix the problem that Doris Arrow Flight SQL query fails and returns empty result, without returning real error information.
<a href=https://github.com/apache/doris/pull/45023 target=_blank rel="noopener noreferrer">Fix query result is empty and not return query error message</a></li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v218>v2.1.8<a href=#v218 class=hash-link aria-label="Direct link to v2.1.8" title="Direct link to v2.1.8"></a></h3>
<ol>
<li>
<p>Support BI tools such as DBeaver to connect to Doris using the <code>arrow-flight-sql</code> protocol, and support the correct display of metadata trees.
<a href=https://github.com/apache/doris/pull/46217 target=_blank rel="noopener noreferrer">Support arrow-flight-sql protocol getStreamCatalogs, getStreamSchemas, getStreamTables #46217</a>.</p>
</li>
<li>
<p>When multiple BEs share the same IP that is accessible to the outside of the cluster, the query results can be correctly forwarded and returned to the ADBC ​​Client.
<a href=https://github.com/apache/doris/pull/43281 target=_blank rel="noopener noreferrer">Arrow flight server supports data forwarding when BE uses public vip</a></p>
</li>
<li>
<p>Support multiple endpoints to read in parallel.
<a href=https://github.com/apache/doris/pull/44286 target=_blank rel="noopener noreferrer">Arrow Flight support multiple endpoints</a></p>
</li>
<li>
<p>Fix query error <code>FE not found arrow flight schema</code>.
<a href=https://github.com/apache/doris/pull/43960 target=_blank rel="noopener noreferrer">Fix FE not found arrow flight schema</a></p>
</li>
<li>
<p>Fix error <code>BooleanBuilder::AppendValues</code> when reading columns that allow NULL.
<a href=https://github.com/apache/doris/pull/43929 target=_blank rel="noopener noreferrer">Fix Doris NULL column conversion to arrow batch</a></p>
</li>
<li>
<p>Fix <code>show processlist</code> displays duplicate Connection IDs.
<a href=https://github.com/apache/doris/pull/46284 target=_blank rel="noopener noreferrer">Fix arrow-flight-sql ConnectContext to use a unified ID #46284</a></p>
</li>
<li>
<p>Fix the problem that the time zone is lost when reading <code>Datetime</code> and <code>DatetimeV2</code> types, resulting in a datetime that is 8 hours less than the actual data.
<a href=https://github.com/apache/doris/pull/38215 target=_blank rel="noopener noreferrer">Fix time zone issues and accuracy issues #38215</a></p>
</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v217>v2.1.7<a href=#v217 class=hash-link aria-label="Direct link to v2.1.7" title="Direct link to v2.1.7"></a></h3>
<ol>
<li>
<p>Fix frequent log printing <code>Connection wait_timeout</code>.
<a href=https://github.com/apache/doris/pull/41770 target=_blank rel="noopener noreferrer">Fix kill timeout FlightSqlConnection and FlightSqlConnectProcessor close</a></p>
</li>
<li>
<p>Fix Arrow Flight Bearer Token expiration from Cache.
<a href=https://github.com/apache/doris/pull/41754 target=_blank rel="noopener noreferrer">Fix Arrow Flight bearer token cache evict after expired</a></p>
</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v216>v2.1.6<a href=#v216 class=hash-link aria-label="Direct link to v2.1.6" title="Direct link to v2.1.6"></a></h3>
<ol>
<li>
<p>Fix query error <code>0.0.0.0:xxx, connection refused</code>.
<a href=https://github.com/apache/doris/pull/40002 target=_blank rel="noopener noreferrer">Fix return result from FE Arrow Flight server error 0.0.0.0:xxx, connection refused</a></p>
</li>
<li>
<p>Fix query error <code>Reach limit of connections</code>.
<a href=https://github.com/apache/doris/pull/39127 target=_blank rel="noopener noreferrer">Fix exceed user property max connection cause Reach limit of connections #39127</a></p>
</li>
</ol>
<p>In previous versions, execute <code>SET PROPERTY FOR 'root' 'max_user_connections' = '1024';</code> to modify the current maximum number of connections for the current user to 1024, which can be temporarily circumvented.</p>
<p>Because the previous version only limits the number of Arrow Flight connections to less than <code>qe_max_connection/2</code>, <code>qe_max_connection</code> is the total number of connections for all fe users, the default is 1024, and does not limit the number of Arrow Flight connections for a single user to less than <code>max_user_connections</code> in <code>UserProperty</code>, the default is 100, so when the number of Arrow Flight connections exceeds the upper limit of the current user's connection number, an error <code>Reach limit of connections</code> will be reported, so the current user's <code>max_user_connections</code> needs to be increased.</p>
<p>For details of the problem, see: <a href="https://ask.selectdb.com/questions/D18b1/2-1-4-ban-ben-python-shi-yong-arrow-flight-sql-lian-jie-bu-hui-duan-kai-lian-jie-shu-zhan-man-da-dao-100/E1ic1?commentId=10070000000005324" target=_blank rel="noopener noreferrer">Questions</a></p>
<ol start=3>
<li>Add Conf <code>arrow_flight_result_sink_buffer_size_rows</code> to support modifying the ArrowBatch size of query results returned in a single time, the default is 4096 * 8.
<a href=https://github.com/apache/doris/pull/38221 target=_blank rel="noopener noreferrer">Add config arrow_flight_result_sink_buffer_size_rows</a></li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v215>v2.1.5<a href=#v215 class=hash-link aria-label="Direct link to v2.1.5" title="Direct link to v2.1.5"></a></h3>
<ol>
<li>Fix the problem that Arrow Flight SQL query results are empty.
<a href=https://github.com/apache/doris/pull/36827 target=_blank rel="noopener noreferrer">Fix arrow flight result sink #36827</a></li>
</ol>
<p>Doris v2.1.4 may report an error when reading large amounts of data. For details, see: <a href=https://ask.selectdb.com/questions/D1Ia1/arrow-flight-sql-shi-yong-python-de-adbc-driver-lian-jie-doris-zhi-xing-cha-xun-sql-du-qu-bu-dao-shu-ju target=_blank rel="noopener noreferrer">Questions</a></p>
<h2 class="anchor anchorWithStickyNavbar_LWe7" id=30-release-note>3.0 Release Note<a href=#30-release-note class=hash-link aria-label="Direct link to 3.0 Release Note" title="Direct link to 3.0 Release Note"></a></h2>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v305>v3.0.5<a href=#v305 class=hash-link aria-label="Direct link to v3.0.5" title="Direct link to v3.0.5"></a></h3>
<ol>
<li>Fix the problem of serializing Doris data to Arrow.
<a href=https://github.com/apache/doris/pull/48944 target=_blank rel="noopener noreferrer">Fix UT DataTypeSerDeArrowTest of Array/Map/Struct/Bitmap/HLL/Decimal256 types</a></li>
</ol>
<ul>
<li>Failed to read <code>Decimal256</code> type;</li>
<li>Subtle error in reading <code>DatetimeV2</code> type;</li>
<li>Incorrect result in reading <code>DateV2</code> type;</li>
<li>Error when reading <code>IPV4/IPV6</code> type result is NULL;</li>
</ul>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v304>v3.0.4<a href=#v304 class=hash-link aria-label="Direct link to v3.0.4" title="Direct link to v3.0.4"></a></h3>
<ol>
<li>
<p>Support DBeaver and other BI tools to connect to Doris using <code>arrow-flight-sql</code> protocol, and support correct display of metadata tree.
<a href=https://github.com/apache/doris/pull/46217 target=_blank rel="noopener noreferrer">Support arrow-flight-sql protocol getStreamCatalogs, getStreamSchemas, getStreamTables #46217</a>.</p>
</li>
<li>
<p>Support multiple endpoints to read in parallel.
<a href=https://github.com/apache/doris/pull/44286 target=_blank rel="noopener noreferrer">Arrow Flight support multiple endpoints</a></p>
</li>
<li>
<p>Fix the error <code>BooleanBuilder::AppendValues</code> when reading columns that allow NULL.
<a href=https://github.com/apache/doris/pull/43929 target=_blank rel="noopener noreferrer">Fix Doris NULL column conversion to arrow batch</a></p>
</li>
<li>
<p>Fix <code>show processlist</code> to display duplicate Connection IDs.
<a href=https://github.com/apache/doris/pull/46284 target=_blank rel="noopener noreferrer">Fix arrow-flight-sql ConnectContext to use a unified ID #46284</a></p>
</li>
<li>
<p>Fix Doris Arrow Flight SQL query failed and returned empty results, without returning real error information.
<a href=https://github.com/apache/doris/pull/45023 target=_blank rel="noopener noreferrer">Fix query result is empty and not return query error message</a></p>
</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v303>v3.0.3<a href=#v303 class=hash-link aria-label="Direct link to v3.0.3" title="Direct link to v3.0.3"></a></h3>
<ol>
<li>
<p>Fix query error <code>0.0.0.0:xxx, connection refused</code>.
<a href=https://github.com/apache/doris/pull/40002 target=_blank rel="noopener noreferrer">Fix return result from FE Arrow Flight server error 0.0.0.0:xxx, connection refused</a></p>
</li>
<li>
<p>Fix query error <code>Reach limit of connections</code>.
<a href=https://github.com/apache/doris/pull/39127 target=_blank rel="noopener noreferrer">Fix exceed user property max connection cause Reach limit of connections #39127</a></p>
</li>
</ol>
<p>In previous versions, execute <code>SET PROPERTY FOR 'root' 'max_user_connections' = '1024';</code> to modify the current maximum number of connections for the current user to 1024, which can be temporarily circumvented.</p>
<p>Because the previous version only limits the number of Arrow Flight connections to less than <code>qe_max_connection/2</code>, <code>qe_max_connection</code> is the total number of connections for all fe users, the default is 1024, and does not limit the number of Arrow Flight connections for a single user to less than <code>max_user_connections</code> in <code>UserProperty</code>, the default is 100, so when the number of Arrow Flight connections exceeds the upper limit of the current user's connection number, an error <code>Reach limit of connections</code> will be reported, so the current user's <code>max_user_connections</code> needs to be increased.</p>
<p>For details of the problem, see: <a href="https://ask.selectdb.com/questions/D18b1/2-1-4-ban-ben-python-shi-yong-arrow-flight-sql-lian-jie-bu-hui-duan-kai-lian-jie-shu-zhan-man-da-dao-100/E1ic1?commentId=10070000000005324" target=_blank rel="noopener noreferrer">Questions</a></p>
<ol start=3>
<li>
<p>Fix frequent printing of log <code>Connection wait_timeout</code>.
<a href=https://github.com/apache/doris/pull/41770 target=_blank rel="noopener noreferrer">Fix kill timeout FlightSqlConnection and FlightSqlConnectProcessor close</a></p>
</li>
<li>
<p>Fix Arrow Flight Bearer Token being eliminated from Cache after expiration.
<a href=https://github.com/apache/doris/pull/41754 target=_blank rel="noopener noreferrer">Fix Arrow Flight bearer token cache evict after expired</a></p>
</li>
<li>
<p>When multiple BEs share the same IP address accessible from outside the cluster, the query results can be correctly forwarded and returned to the ADBC ​​Client.
<a href=https://github.com/apache/doris/pull/43281 target=_blank rel="noopener noreferrer">Arrow flight server supports data forwarding when BE uses public vip</a></p>
</li>
<li>
<p>Fix the query error <code>FE not found arrow flight schema</code>.
<a href=https://github.com/apache/doris/pull/43960 target=_blank rel="noopener noreferrer">Fix FE not found arrow flight schema</a></p>
</li>
<li>
<p>Fix the problem that the time zone is lost when reading <code>Datetime</code> and <code>DatetimeV2</code> types, resulting in a datetime that is 8 hours less than the actual data.
<a href=https://github.com/apache/doris/pull/38215 target=_blank rel="noopener noreferrer">Fix time zone issues and accuracy issues #38215</a></p>
</li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v302>v3.0.2<a href=#v302 class=hash-link aria-label="Direct link to v3.0.2" title="Direct link to v3.0.2"></a></h3>
<ol>
<li>Added Conf <code>arrow_flight_result_sink_buffer_size_rows</code> to support modifying the ArrowBatch size of query results returned in a single transaction, the default is 4096 * 8.
<a href=https://github.com/apache/doris/pull/38221 target=_blank rel="noopener noreferrer">Add config arrow_flight_result_sink_buffer_size_rows</a></li>
</ol>
<h3 class="anchor anchorWithStickyNavbar_LWe7" id=v301>v3.0.1<a href=#v301 class=hash-link aria-label="Direct link to v3.0.1" title="Direct link to v3.0.1"></a></h3>
<ol>
<li>Query results are missing, query result rows = actual number of rows / number of BEs
<a href=https://github.com/apache/doris/pull/37779 target=_blank rel="noopener noreferrer">Fix get Schema failed when enable_parallel_result_sink is false #37779</a></li>
</ol>
<p>In Doris 3.0.0, if the outermost layer of the query is an aggregation, the SQL is similar to <code>select k1, sum(k2) from xxx group by k1</code>, you may encounter (query result rows = actual number of rows / number of BEs), which is a problem introduced by <a href=https://github.com/apache/doris/pull/36053 target=_blank rel="noopener noreferrer">support parallel result sink</a>. In <a href=https://github.com/apache/doris/pull/37779 target=_blank rel="noopener noreferrer">Fix get Schema failed when enable_parallel_result_sink is false</a> is a temporary fix, which will be officially fixed after <a href=https://github.com/apache/doris/pull/44286 target=_blank rel="noopener noreferrer">Arrow Flight support multiple endpoints</a> supports parallel reading of multiple endpoints.</div></article><div class="flex items-center text-sm lg:text-base justify-end lg:col mt-10"><a href="https://github.com/apache/doris-website/issues/new?title=Issue on docs&body=Path:false" target=_blank rel="noopener noreferrer" class="lg:mr-6 footerBtn_e3I8"><svg width=20 height=20 viewBox="0 0 20 20" fill=none><path d="M9.48038 2.9C9.71132 2.5 10.2887 2.5 10.5196 2.9L18.1406 16.1C18.3716 16.5 18.0829 17 17.621 17H2.37898C1.9171 17 1.62842 16.5 1.85936 16.1L9.48038 2.9Z" stroke=currentColor stroke-width=1.2 stroke-linecap=round /><path d="M10.5699 7.9516C10.5874 7.5628 10.2769 7.23804 9.88766 7.23804C9.49847 7.23804 9.18796 7.5628 9.20543 7.9516L9.41597 12.6385C9.42731 12.8908 9.63513 13.0895 9.88766 13.0895C10.1402 13.0895 10.348 12.8908 10.3593 12.6385L10.5699 7.9516ZM9.89338 13.7638C9.65338 13.7638 9.44766 13.8323 9.28766 13.9923C9.12766 14.1409 9.04766 14.3352 9.04766 14.5752C9.04766 14.8152 9.12766 15.0095 9.28766 15.1695C9.45909 15.318 9.6648 15.398 9.89338 15.398C10.1219 15.398 10.3162 15.318 10.4762 15.158C10.6477 14.998 10.7277 14.8038 10.7277 14.5752C10.7277 14.3352 10.6477 14.1409 10.4762 13.9923C10.3162 13.8323 10.1219 13.7638 9.89338 13.7638Z" fill=currentColor /></svg> <span class=ml-2>Report issue</span></a></div><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/docs/dev/db-connect/database-connect/><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Connecting by MySQL Protocol</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/docs/dev/table-design/overview/><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Overview</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_jeP5 thin-scrollbar toc-container theme-doc-toc-desktop"><div><a href=/><div class="toc-icon-content group"><svg width=21 height=20 fill=currentColor viewBox="0 0 21 20" class=group-hover:text-[#444FD9]><path fill-rule=evenodd d="M3.835 6.44a1 1 0 0 0-.445.832v8.939c0 .436.354.79.79.79H16.81a.79.79 0 0 0 .79-.79V7.272a1 1 0 0 0-.446-.832L11.05 2.37a1 1 0 0 0-1.11 0zm7.26 4.16a.6.6 0 1 0-1.2 0v3.3a.6.6 0 0 0 1.2 0z" clip-rule=evenodd /></svg><span class=group-hover:text-[#444FD9]>Doris Homepage</span></div></a><a href=https://github.com/apache/doris/discussions target=_blank rel="noopener noreferrer" class="toc-icon-content group"><svg class=group-hover:text-[#444FD9] width=21 height=20 fill=currentColor viewBox="0 0 21 20"><g clip-path=url(#a)><g clip-path=url(#b)><path d="M10.506 2.698a7.494 7.494 0 0 1 7.5 7.495c0 3.274-2.099 6.058-5.023 7.08-.394.099-.334-.181-.334-.372v-1.299c2.274.266 2.367-1.238 2.519-1.49.308-.526 1.037-.66.82-.911-.518-.267-1.046.067-1.658.97-.442.655-1.305.545-1.743.436a2.1 2.1 0 0 0-.581-1.02c2.356-.421 3.338-1.86 3.338-3.569 0-.83-.273-1.592-.81-2.207.342-1.014-.031-1.882-.082-2.01-.973-.088-1.985.696-2.064.759a7.3 7.3 0 0 0-1.892-.228c-.71 0-1.344.082-1.902.233-.19-.145-1.128-.818-2.033-.736-.048.129-.414.977-.092 1.977a3.3 3.3 0 0 0-.82 2.217c0 1.713.99 3.153 3.352 3.568a2.14 2.14 0 0 0-.638 1.525v1.885c-.014.151 0 .3-.252.3a7.496 7.496 0 0 1 2.395-14.603"/></g></g><defs><clipPath id=a><path fill=#fff d="M0 0h21v20H0z"/></clipPath><clipPath id=b><path fill=#fff d="M18.5 2h-16v16h16z"/></clipPath></defs></svg><span class=group-hover:text-[#444FD9]>Ask Questions on Discussion</span></a><a href=https://doris.apache.org/slack target=_blank rel="noopener noreferrer" class="toc-icon-content group"><div style=padding:2px><svg class=group-hover:text-[#444FD9] fill=currentColor viewBox="0 0 1024 1024" version=1.1 p-id=4316 width=16 height=16><path d="M85.333333 625.92a85.333333 85.333333 0 1 0 170.666667 0v-85.333333H170.666667a85.333333 85.333333 0 0 0-85.333334 85.333333z m539.306667-142.506667a85.333333 85.333333 0 0 0 85.333333-85.333333V170.666667a85.333333 85.333333 0 1 0-170.666666 0v227.413333a85.333333 85.333333 0 0 0 86.186666 85.333333z m312.32-85.333333a85.333333 85.333333 0 1 0-170.666667 0v85.333333h85.333334a85.333333 85.333333 0 0 0 87.04-85.333333zM398.506667 540.586667a85.333333 85.333333 0 0 0-85.333334 85.333333V853.333333a85.333333 85.333333 0 1 0 170.666667 0v-227.413333a85.333333 85.333333 0 0 0-85.333333-85.333333zM625.493333 768h-85.333333v85.333333a85.333333 85.333333 0 1 0 85.333333-85.333333zM853.333333 540.586667h-227.84a85.333333 85.333333 0 0 0 0 170.666666H853.333333a85.333333 85.333333 0 0 0 0-170.666666zM398.506667 312.746667H170.666667a85.333333 85.333333 0 1 0 0 170.666666h227.84a85.333333 85.333333 0 0 0 0-170.666666z m0-227.413334a85.333333 85.333333 0 0 0 0 170.666667h85.333333V170.666667a85.333333 85.333333 0 0 0-85.333333-85.333334z" p-id=4317 /></svg></div><span class=group-hover:text-[#444FD9]>Chat on Slack</span></a></div><div><span class="ml-4 title-text">On This Page</span><ul class="table-of-contents table-of-contents__left-border"><li><a href=#implementation-principle class="table-of-contents__link toc-highlight">Implementation Principle</a><li><a href=#python-usage class="table-of-contents__link toc-highlight">Python Usage</a><ul><li><a href=#install-library class="table-of-contents__link toc-highlight">Install Library</a><li><a href=#connect-to-doris class="table-of-contents__link toc-highlight">Connect to Doris</a><li><a href=#create-a-table-and-get-metadata class="table-of-contents__link toc-highlight">Create a table and get metadata</a><li><a href=#import-data class="table-of-contents__link toc-highlight">Import data</a><li><a href=#execute-a-query class="table-of-contents__link toc-highlight">Execute a query</a><li><a href=#complete-code class="table-of-contents__link toc-highlight">Complete code</a></ul><li><a href=#jdbc-connector-with-arrow-flight-sql class="table-of-contents__link toc-highlight">Jdbc Connector with Arrow Flight SQL</a><li><a href=#java-usage class="table-of-contents__link toc-highlight">Java Usage</a><ul><li><a href=#adbc-driver class="table-of-contents__link toc-highlight">ADBC Driver</a><li><a href=#jdbc-driver class="table-of-contents__link toc-highlight">JDBC Driver</a><li><a href=#choice-of-jdbc-and-java-connection-methods class="table-of-contents__link toc-highlight">Choice of Jdbc and Java connection methods</a></ul><li><a href=#interaction-with-other-big-data-components class="table-of-contents__link toc-highlight">Interaction with other big data components</a><ul><li><a href=#spark--flink class="table-of-contents__link toc-highlight">Spark & ​​Flink</a><li><a href=#support-bi-tools class="table-of-contents__link toc-highlight">Support BI tools</a></ul><li><a href=#extended-application class="table-of-contents__link toc-highlight">Extended Application</a><ul><li><a href=#multiple-bes-return-results-in-parallel class="table-of-contents__link toc-highlight">Multiple BEs return results in parallel</a><li><a href=#multiple-bes-share-the-same-ip-accessible-from-outside-the-cluster class="table-of-contents__link toc-highlight">Multiple BEs share the same IP accessible from outside the cluster</a></ul><li><a href=#faq class="table-of-contents__link toc-highlight">FAQ</a><li><a href=#21-release-note class="table-of-contents__link toc-highlight">2.1 Release Note</a><ul><li><a href=#v219 class="table-of-contents__link toc-highlight">v2.1.9</a><li><a href=#v218 class="table-of-contents__link toc-highlight">v2.1.8</a><li><a href=#v217 class="table-of-contents__link toc-highlight">v2.1.7</a><li><a href=#v216 class="table-of-contents__link toc-highlight">v2.1.6</a><li><a href=#v215 class="table-of-contents__link toc-highlight">v2.1.5</a></ul><li><a href=#30-release-note class="table-of-contents__link toc-highlight">3.0 Release Note</a><ul><li><a href=#v305 class="table-of-contents__link toc-highlight">v3.0.5</a><li><a href=#v304 class="table-of-contents__link toc-highlight">v3.0.4</a><li><a href=#v303 class="table-of-contents__link toc-highlight">v3.0.3</a><li><a href=#v302 class="table-of-contents__link toc-highlight">v3.0.2</a><li><a href=#v301 class="table-of-contents__link toc-highlight">v3.0.1</a></ul></ul></div></div></div></div></div></main></div></div></div><div class="footer pt-16 pb-10"><div class=container><div class=footer-box><div class=left><img src=/images/asf_logo_apache.svg alt="" class="footer__logo themedComponent_mlkZ themedComponent--light_NVdE"><img src=/images/asf_logo_apache.svg alt="" class="footer__logo themedComponent_mlkZ themedComponent--dark_xIcU"><div class="row footer__links"><div class="col footer__col"><div class=footer__title>ASF</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.apache.org/ target=_blank rel="noopener noreferrer" class=footer__link-item>Foundation<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://www.apache.org/licenses/ target=_blank rel="noopener noreferrer" class=footer__link-item>License<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://www.apache.org/events/current-event target=_blank rel="noopener noreferrer" class=footer__link-item>Events<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://www.apache.org/foundation/sponsorship.html target=_blank rel="noopener noreferrer" class=footer__link-item>Sponsorship<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://privacy.apache.org/policies/privacy-policy-public.html target=_blank rel="noopener noreferrer" class=footer__link-item>Privacy<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://www.apache.org/security/ target=_blank rel="noopener noreferrer" class=footer__link-item>Security<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://www.apache.org/foundation/thanks.html target=_blank rel="noopener noreferrer" class=footer__link-item>Thanks<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="col footer__col"><div class=footer__title>Resources</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/download/>Download</a><li class=footer__item><a class=footer__link-item href=/blog/>Blog</a><li class=footer__item><a class=footer__link-item href=/ecosystem/cluster-management/>Ecosystem</a><li class=footer__item><a class=footer__link-item href=/users/>Users</a><li class=footer__item><a href=https://github.com/apache/doris/discussions target=_blank rel="noopener noreferrer" class=footer__link-item>Discussions<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/community/how-to-contribute/contribute-to-doris/>How to contribute</a><li class=footer__item><a href=https://github.com/apache/doris/ target=_blank rel="noopener noreferrer" class=footer__link-item>Source code<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a class=footer__link-item href=/community/team/>Doris team</a><li class=footer__item><a href=https://github.com/apache/doris/issues/30669 target=_blank rel="noopener noreferrer" class=footer__link-item>Roadmap<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a href=https://cwiki.apache.org/confluence/display/DORIS/Doris+Improvement+Proposals target=_blank rel="noopener noreferrer" class=footer__link-item>Improvement proposal<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_nPIU><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div></div></div><div class=right><div class=footer__title>Join the community</div><div class=social-list><div class=social><a href=mailto:dev@doris.apache.org target=_blank title=mail class=item><svg width=2em height=2em viewBox="0 0 32 32" fill=none><path d="M5.6003 6H26.3997C27.8186 6 28.982 7.10964 29 8.46946L16.0045 15.454L3.01202 8.47829C3.02405 7.11258 4.1784 6 5.6003 6ZM3.01202 11.1508L3 23.5011C3 24.8756 4.16938 26 5.6003 26H26.3997C27.8306 26 29 24.8756 29 23.5011V11.145L16.3111 17.8028C16.1157 17.9058 15.8813 17.9058 15.6889 17.8028L3.01202 11.1508Z" fill=currentColor /></svg></a><a href=https://github.com/apache/doris target=_blank title=github class=item><svg width=2em height=2em viewBox="0 0 32 32" fill=none><path d="M16.0001 2.66675C8.63342 2.66675 2.66675 8.63341 2.66675 16.0001C2.66524 18.7991 3.54517 21.5276 5.1817 23.7983C6.81824 26.0691 9.12828 27.7668 11.7841 28.6508C12.4508 28.7668 12.7001 28.3668 12.7001 28.0161C12.7001 27.7001 12.6828 26.6508 12.6828 25.5334C9.33342 26.1508 8.46675 24.7174 8.20008 23.9668C8.04942 23.5828 7.40008 22.4001 6.83342 22.0828C6.36675 21.8334 5.70008 21.2161 6.81608 21.2001C7.86675 21.1828 8.61608 22.1668 8.86675 22.5668C10.0668 24.5828 11.9841 24.0161 12.7494 23.6668C12.8668 22.8001 13.2161 22.2174 13.6001 21.8841C10.6334 21.5508 7.53342 20.4001 7.53342 15.3001C7.53342 13.8494 8.04942 12.6507 8.90008 11.7161C8.76675 11.3827 8.30008 10.0161 9.03342 8.18275C9.03342 8.18275 10.1494 7.83342 12.7001 9.55075C13.7855 9.2495 14.907 9.09787 16.0334 9.10008C17.1668 9.10008 18.3001 9.24942 19.3668 9.54942C21.9161 7.81608 23.0334 8.18408 23.0334 8.18408C23.7668 10.0174 23.3001 11.3841 23.1668 11.7174C24.0161 12.6507 24.5334 13.8334 24.5334 15.3001C24.5334 20.4174 21.4174 21.5508 18.4508 21.8841C18.9334 22.3001 19.3508 23.1001 19.3508 24.3508C19.3508 26.1334 19.3334 27.5668 19.3334 28.0174C19.3334 28.3668 19.5841 28.7828 20.2508 28.6494C22.8975 27.7558 25.1973 26.0547 26.8266 23.7856C28.4559 21.5165 29.3327 18.7936 29.3334 16.0001C29.3334 8.63341 23.3668 2.66675 16.0001 2.66675V2.66675Z" fill=currentColor /></svg></a><a href=https://twitter.com/doris_apache target=_blank title=twitter class=item><svg width=2em height=2em viewBox="0 0 32 32" fill=none><path d="M4.625 4.625H11.2809L27.375 27.375H20.7191L4.625 4.625ZM7.52549 6.10639L21.5236 25.8936H24.4746L10.4764 6.10639H7.52549Z" fill=currentColor /><path d="M14.4268 18.4803L6.53447 27.375H4.625L13.5581 17.2525L14.4268 18.4803ZM18.1299 14.3066L26.7203 4.625H24.7017L17.2525 13.0662L18.1299 14.3066Z" fill=currentColor /></svg></a><a href=https://doris.apache.org/slack title=slack target=_blank class=item><svg width=2em height=2em viewBox="0 0 32 32" fill=none><g clip-path=url(#clip0_125_278)><path d="M12.5875 16.6906C11.0844 16.6906 9.86562 17.9094 9.86562 19.4125V26.2375C9.86562 26.9594 10.1524 27.6517 10.6628 28.1622C11.1733 28.6726 11.8656 28.9594 12.5875 28.9594C13.3094 28.9594 14.0017 28.6726 14.5122 28.1622C15.0226 27.6517 15.3094 26.9594 15.3094 26.2375V19.4531C15.3094 17.9094 14.0906 16.6906 12.5875 16.6906ZM3 19.4531C3 20.175 3.28677 20.8673 3.79722 21.3778C4.30767 21.8882 4.99999 22.175 5.72187 22.175C6.44376 22.175 7.13608 21.8882 7.64653 21.3778C8.15698 20.8673 8.44375 20.175 8.44375 19.4531V16.7312H5.7625C4.25938 16.6906 3 17.9094 3 19.4531ZM12.5875 3C11.8656 3 11.1733 3.28677 10.6628 3.79722C10.1524 4.30767 9.86562 4.99999 9.86562 5.72187C9.86562 6.44376 10.1524 7.13608 10.6628 7.64653C11.1733 8.15698 11.8656 8.44375 12.5875 8.44375H15.3094V5.72187C15.3094 4.21875 14.0906 3 12.5875 3ZM5.72187 15.3094H12.5469C13.2688 15.3094 13.9611 15.0226 14.4715 14.5122C14.982 14.0017 15.2688 13.3094 15.2688 12.5875C15.2688 11.8656 14.982 11.1733 14.4715 10.6628C13.9611 10.1524 13.2688 9.86562 12.5469 9.86562H5.72187C4.99999 9.86562 4.30767 10.1524 3.79722 10.6628C3.28677 11.1733 3 11.8656 3 12.5875C3 13.3094 3.28677 14.0017 3.79722 14.5122C4.30767 15.0226 4.99999 15.3094 5.72187 15.3094ZM26.2375 9.86562C24.7344 9.86562 23.5156 11.0844 23.5156 12.5875V15.3094H26.2375C26.9594 15.3094 27.6517 15.0226 28.1622 14.5122C28.6726 14.0017 28.9594 13.3094 28.9594 12.5875C28.9594 11.8656 28.6726 11.1733 28.1622 10.6628C27.6517 10.1524 26.9594 9.86562 26.2375 9.86562ZM16.6906 5.72187V12.5875C16.6906 13.3094 16.9774 14.0017 17.4878 14.5122C17.9983 15.0226 18.6906 15.3094 19.4125 15.3094C20.1344 15.3094 20.8267 15.0226 21.3372 14.5122C21.8476 14.0017 22.1344 13.3094 22.1344 12.5875V5.72187C22.1344 4.99999 21.8476 4.30767 21.3372 3.79722C20.8267 3.28677 20.1344 3 19.4125 3C18.6906 3 17.9983 3.28677 17.4878 3.79722C16.9774 4.30767 16.6906 4.99999 16.6906 5.72187ZM22.1344 26.2781C22.1344 24.775 20.9156 23.5562 19.4125 23.5562H16.6906V26.2781C16.6906 27 16.9774 27.6923 17.4878 28.2028C17.9983 28.7132 18.6906 29 19.4125 29C20.1344 29 20.8267 28.7132 21.3372 28.2028C21.8476 27.6923 22.1344 27 22.1344 26.2781ZM26.2781 16.6906H19.4125C18.6906 16.6906 17.9983 16.9774 17.4878 17.4878C16.9774 17.9983 16.6906 18.6906 16.6906 19.4125C16.6906 20.1344 16.9774 20.8267 17.4878 21.3372C17.9983 21.8476 18.6906 22.1344 19.4125 22.1344H26.2375C27.7406 22.1344 28.9594 20.9156 28.9594 19.4125C29 17.9094 27.7812 16.6906 26.2781 16.6906Z" fill=currentColor /></g><defs><clipPath id=clip0_125_278><rect width=26 height=26 fill=currentColor transform="translate(3 3)"/></clipPath></defs></svg></a></div><div class=social><a href=https://www.youtube.com/hashtag/apachedoris title=youtube target=_blank class=item><svg width=2em height=2em viewBox="0 0 32 32" fill=none><path d="M28.5167 7.83429C28.9436 8.25423 29.2532 8.77539 29.4154 9.34742C29.8205 11.5462 30.0159 13.7775 29.999 16.0121C30.0144 18.2382 29.819 20.4609 29.4154 22.6515C29.2532 23.2235 28.9436 23.7446 28.5167 24.1645C28.0898 24.5845 27.5601 24.889 26.9785 25.0486C24.7728 25.625 16.0124 25.625 16.0124 25.625C16.0124 25.625 7.22652 25.625 5.04638 25.0486C4.46489 24.889 3.9351 24.5845 3.5082 24.1645C3.08132 23.7446 2.77176 23.2235 2.60948 22.6515C2.19736 20.4617 1.9934 18.239 2.00025 16.0121C1.9918 13.7767 2.19577 11.5455 2.60948 9.34742C2.77176 8.77539 3.08132 8.25423 3.5082 7.83429C3.9351 7.41436 4.46489 7.10985 5.04638 6.95021C7.25103 6.36354 16.0124 6.37502 16.0124 6.37502C16.0124 6.37502 24.796 6.37502 26.9785 6.95021C27.5601 7.10985 28.0898 7.41436 28.5167 7.83429ZM12.5 21.25L21.25 16.008L12.5 10.75V21.25Z" fill=currentColor /></svg></a><a href=https://www.linkedin.com/company/doris-apache/ title=linkedin target=_blank class=item><svg width=2rem height=2rem viewBox="0 0 32 32" fill=none><path d="M4.29925 26.9996H9.66738V11.6781H4.29925V26.9996ZM22.1628 11.1949C19.9409 11.1949 18.7157 11.9388 17.3054 13.7407V11.6777H11.9459V26.9996H17.305V18.6738C17.305 16.9168 18.145 15.1982 20.1535 15.1982C22.162 15.1982 22.6559 16.9164 22.6559 18.632V27H28V18.2902C28 12.2386 24.3854 11.1949 22.1628 11.1949ZM6.99325 4C5.3395 4 4 5.21047 4 6.7046C4 8.19759 5.3395 9.40617 6.99325 9.40617C8.6455 9.40617 9.985 8.19722 9.985 6.7046C9.985 5.21047 8.6455 4 6.99325 4Z" fill=white /></svg></a><a href=https://medium.com/@ApacheDoris title=medium target=_blank class=item><svg width=2em height=2em viewBox="0 0 32 32" fill=none><g id=Frame><path id=Vector d="M17.7967 16.5385C17.8029 18.53 16.9746 20.4425 15.4937 21.8559C14.0128 23.2693 12.0004 24.0681 9.89836 24.0769C7.79633 24.0681 5.78391 23.2693 4.30302 21.8559C2.82212 20.4425 1.99383 18.53 2.00003 16.5385C1.99383 14.5469 2.82212 12.6344 4.30302 11.221C5.78391 9.80759 7.79633 9.00878 9.89836 9C12.0004 9.00878 14.0128 9.80759 15.4937 11.221C16.9746 12.6344 17.8029 14.5469 17.7967 16.5385ZM26.4533 16.5385C26.4533 20.4514 24.6917 23.6348 22.51 23.6348C20.3283 23.6348 18.555 20.4514 18.555 16.5385C18.555 12.6255 20.3283 9.44214 22.51 9.44214C24.6917 9.44214 26.4533 12.6255 26.4533 16.5385ZM30 16.5385C30 20.0424 29.3817 22.8942 28.6117 22.8942C27.8417 22.8942 27.2233 20.0424 27.2233 16.5385C27.2233 13.0345 27.8417 10.1827 28.6117 10.1827C29.3817 10.1827 30 13.0345 30 16.5385Z" fill=currentColor /></g></svg></a></div></div></div></div><div class=footer__copyright>Copyright © 2026 The Apache Software Foundation,Licensed under the <a href=https://www.apache.org/licenses/LICENSE-2.0 target=_blank>Apache License, Version 2.0</a>. Apache, Doris, Apache Doris, the Apache feather logo and the Apache Doris logo are trademarks of The Apache Software Foundation.</div></div></div></div>