将雅典娜连接到超集

Connecting athena to superset

所以,我正在使用 AWS athena,我将 Data Source 设置为 AwsDataCatalog,将 database 设置为 test_db,在其下我有一个 table 名为 debaprc.

现在,我在 EC2 实例上安装了超集(在虚拟环境中)。在实例上,我安装了 PyAthenaJDBCPyAthena。现在,当我启动 Superset 并尝试添加数据库时,给出的语法是这样的:

awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}

现在我有2个问题-

  1. 我为 schema_name 提供了什么?
  2. 我尝试将 test_db 设为 schema_name,但由于某种原因无法连接。我这样做是对的还是我需要做一些不同的事情?

它对我有用,如下所示将端口 443 添加到连接字符串,您可以将 test_db 用作 schema_name:

awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com:443/{schema_name}?s3_staging_dir={s3_staging_dir}

当心of the encoding:

awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com:443/{schema_name}?AwsRegion={region_name}&s3_staging_dir=s3%3A%2F%2Faws-athena-results-xxxxxxx

例如,对我来说,有必要:

  • s3:// 转换为 s3%3A%2F%2F(而不仅仅是 Superset 文档中的 :?)
  • 在额外参数
  • 中再次添加区域

如果你不提供schema名称(也叫数据库),我认为它默认的值是default

遗憾的是,当连接字符串在 Superset 上失败时,没有显示任何有用的信息...

检查 PyAthena 版本。 Superset docs tell PyAthena>1.2.0 while PyAthena PyPI pagePyAthena[SQLAlchemy]>=1.0.0, <2.0.0。在我的例子中,PyAthena[SQLAlchemy]>1.2.0, <2.0.0(结合两个约束)解决了一个问题,并且表格出现在 SQL Lab 的下拉列表中(之前的 PyAthena==2.5.1(最新)版本是空的)。