(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{cv4b:function(e,t,o){"use strict";o.r(t),o.d(t,"_frontmatter",(function(){return c})),o.d(t,"default",(function(){return b}));var r=o("k1TG"),n=o("8o2o"),a=(o("q1tI"),o("7ljp")),i=o("hhGP"),c=(o("qKvR"),{});void 0!==c&&c&&c===Object(c)&&Object.isExtensible(c)&&!c.hasOwnProperty("__filemeta")&&Object.defineProperty(c,"__filemeta",{configurable:!0,value:{name:"_frontmatter",filename:"src/pages/docs/Connecting to Databases/dremio.mdx"}});var s={_frontmatter:c},p=i.a;function b(e){var t=e.components,o=Object(n.a)(e,["components"]);return Object(a.b)(p,Object(r.a)({},s,o,{components:t,mdxType:"MDXLayout"}),Object(a.b)("h2",{id:"dremio"},"Dremio"),Object(a.b)("p",null,"The recommended connector library for Dremio is\n",Object(a.b)("a",Object(r.a)({parentName:"p"},{href:"https://pypi.org/project/sqlalchemy-dremio/"}),"sqlalchemy_dremio"),"."),Object(a.b)("p",null,"The expected connection string for ODBC (Default port is 31010) is formatted as follows:"),Object(a.b)("pre",null,Object(a.b)("code",Object(r.a)({parentName:"pre"},{}),"dremio://{username}:{password}@{host}:{port}/dremio\n")),Object(a.b)("p",null,"The expected connection string for Arrow Flight (Dremio 4.9.1+. Default port is 32010) is formatted as follows:"),Object(a.b)("pre",null,Object(a.b)("code",Object(r.a)({parentName:"pre"},{}),"dremio+flight://{username}:{password}@{host}:{port}/dremio\n")),Object(a.b)("p",null,"This ",Object(a.b)("a",Object(r.a)({parentName:"p"},{href:"https://www.dremio.com/tutorials/dremio-apache-superset/"}),"blog post by Dremio")," has some\nadditional helpful instructions on connecting Superset to Dremio."))}void 0!==b&&b&&b===Object(b)&&Object.isExtensible(b)&&!b.hasOwnProperty("__filemeta")&&Object.defineProperty(b,"__filemeta",{configurable:!0,value:{name:"MDXContent",filename:"src/pages/docs/Connecting to Databases/dremio.mdx"}}),b.isMDXComponent=!0}}]);
//# sourceMappingURL=component---src-pages-docs-connecting-to-databases-dremio-mdx-c48f260f4448f61e1539.js.map