{"version":3,"sources":["webpack:///./src/pages/docs/Connecting to Databases/athena.mdx"],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","components","props","mdxType","isMDXComponent"],"mappings":"uPAMaA,G,UAAe,S,mOAE5B,IAKMC,EAAc,CAClBD,gBAEIE,EAAYC,IACH,SAASC,EAAT,GAGZ,IAFDC,EAEC,EAFDA,WACGC,EACF,8BACD,OAAO,YAACJ,EAAD,eAAeD,EAAiBK,EAAhC,CAAuCD,WAAYA,EAAYE,QAAQ,cAC5E,iBAAQ,CACN,GAAM,cADR,cAGA,iBAAQ,CACN,GAAM,gBADR,gBAGA,qBAAG,gBAAO,CACN,KAAQ,yCACR,WAAc,KAFf,gBAAH,kDAME,gBAAO,CACL,KAAQ,sEACR,WAAc,KAFhB,8BANF,KAWA,+EACA,uBAAK,mBAAU,CACX,WAAc,OADb,wJAIL,6GACA,uBAAK,mBAAU,CACX,WAAc,OADb,6BAIL,iBAAQ,CACN,GAAM,YADR,YAGA,yCACE,gBAAO,CACL,KAAQ,qCACR,WAAc,KAFhB,oBADF,8DAOA,uBAAK,mBAAU,CACX,WAAc,OADb,8G,iOAQTH,EAAWI,gBAAiB","file":"component---src-pages-docs-connecting-to-databases-athena-mdx-e89ef633f553b52c1f92.js","sourcesContent":["import * as React from 'react'\n  /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsx mdx */\n\nimport DefaultLayout from \"/Users/max/code/superset/docs/node_modules/gatsby-theme-docz/src/base/Layout.js\";\nexport const _frontmatter = {};\n\nconst makeShortcode = name => function MDXDefaultShortcode(props) {\n  console.warn(\"Component \" + name + \" was not imported, exported, or provided by MDXProvider as global scope\");\n  return <div {...props} />;\n};\n\nconst layoutProps = {\n  _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n  components,\n  ...props\n}) {\n  return <MDXLayout {...layoutProps} {...props} components={components} mdxType=\"MDXLayout\">\n    <h2 {...{\n      \"id\": \"aws-athena\"\n    }}>{`AWS Athena`}</h2>\n    <h3 {...{\n      \"id\": \"pyathenajdbc\"\n    }}>{`PyAthenaJDBC`}</h3>\n    <p><a {...{\n        \"href\": \"https://pypi.org/project/PyAthenaJDBC/\",\n        \"parentName\": \"p\"\n      }}>{`PyAthenaJDBC`}</a>\n      {` is a Python DB 2.0 compliant wrapper for the\n`}\n      <a {...{\n        \"href\": \"https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html\",\n        \"parentName\": \"p\"\n      }}>{`Amnazon Athena JDBC driver`}</a>\n      {`.`}</p>\n    <p>{`The connection string for Amazon Athena is as follows:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`awsathena+jdbc://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&...\n`}</code></pre>\n    <p>{`Note that you'll need to escape & encode when forming the connection string like so:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`s3://... -> s3%3A//...\n`}</code></pre>\n    <h3 {...{\n      \"id\": \"pyathena\"\n    }}>{`PyAthena`}</h3>\n    <p>{`You can also use `}\n      <a {...{\n        \"href\": \"https://pypi.org/project/PyAthena/\",\n        \"parentName\": \"p\"\n      }}>{`PyAthena library`}</a>\n      {` (no Java required) with the\nfollowing connection string:`}</p>\n    <pre><code {...{\n        \"parentName\": \"pre\"\n      }}>{`awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{\n`}</code></pre>\n\n  </MDXLayout>;\n}\n;\nMDXContent.isMDXComponent = true;\n      "],"sourceRoot":""}