6

有没有人尝试将超集连接到 AWS athena ?

我能够使用 SQLAlchemy URI 连接到 redshift:postgresql://username:password@xxxx.redshift.amazonaws.com:port/dbname

但我很难连接到 AWS athena。AWS 有 JDBC 驱动程序(http://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html),但我不知道如何将它与超集一起使用。有什么例子吗?

4

6 回答 6

6

万一有人来这里:

awsathena+jdbc://username:password@xxxx.redshift.amazonaws.com:port/dbname

这是来自超集文档

于 2017-06-13T10:06:42.223 回答
2

我们尝试使用 PyAthena JDBC & REST 安装超集。我们对 PyAthena (REST) 的体验远好于 PyAthenaJDBC,建议在生产中使用相同的。

安装PyAthena(纯python库,不需要java)

pip install "PyAthena>1.2.0"

通过创建连接 url 访问数据库

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

我找到了这篇文章,一个很好的部署超集的指南。

于 2019-12-04T05:23:51.117 回答
1

看看这个 github PR 你会想要将 PyAthenaJDBC 包安装到 pip 中。您所指的驱动程序是 Java 驱动程序,这很棒,但 Superset 主要是一个 Python 应用程序,因此它需要一个 Python 驱动程序来连接/与 Athena 交互。

上面的答案是正确的,但您需要安装该软件包以确保您实际上可以连接到 athena。

于 2017-08-25T14:19:30.747 回答
0

Superset的官方指导:

https://superset.apache.org/docs/databases/athena

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

您需要自己进行一些调整。在 2021 年 12 月 12 日阅读了数小时的帖子后,这对我有用:

awsathena+rest://{secret id}:{secret access key}@athena.ap-southeast-1.amazonaws.com/test?s3_staging_dir=s3://{your bucket where Athena query result is stored}/test/&work_group=primary

请注意,在我的示例中:

"schema_name = test":此时,您必须在 Athena\Query Editor\Database 下看到一个名为“test”的数据库。它是在 Glue Console\Data Catalog\Database 中使用爬虫或手册创建的。

s3://{your bucket}/{path if needed}/test:您需要前往 Athena\Workgroups,选择一个工作组并检查设置是否打开了“查询结果位置”。在我的例子中,工作组的名称是“primary”,“test”数据库的查询结果将存储在 s3://{your bucket where Athena query result is stored}/test/

确保你已经在 Python 虚拟环境下安装了这些

pip install "PyAthenaJDBC>1.0.9"

pip install "PyAthena>1.2.0"

看看如何在 Python Env 下创建 Superset:

https://superset.apache.org/docs/installation/installing-superset-from-scratch

安全组:

(我从这里得到这个指令:https ://www.youtube.com/watch?v=vzuPQPRcT-0 )

我在 EC2 实例上构建 Superset。因此,您需要检查安全组设置。因为它涉及到 EC2 服务、Athena 服务以及 Superset 在 UI 中运行的网站。

就我而言,我已打开所有这些设置以确保它可以第一次运行。然后您可以稍后缩小设置范围。

自定义 TCP - TCP - 8088 - ::/0 ;0.0.0.0/0

HTTP - TCP - 80 - ::/0 ;0.0.0.0/0

SSH - TCP - 22 - ::/0 ;0.0.0.0/0

自定义 ICMP - IPv4 - 回显请求 - N/A - 0.0.0.0/0

所有 ICMP - IPv6 - IPv6 ICMP - 所有 - ::/0

所有 ICMP - IPv6 - IPv6 ICMP - 所有 - 0.0.0.0/0

于 2021-12-12T07:42:08.637 回答
0

我通过以下步骤使其工作:PyAthenaJDBC (python 3.6.7):

1) 确保你有 PyAthenaJDBC pkg。安装:

pip install "PyAthenaJDBC>1.0.9"

2) 重启超集

3)下载JDBC驱动:从aws驱动下载我用的是AthenaJDBC41-2.0.6.jar版本

4)将数据源添加到超集:

awsathena+jdbc://AWS_KEY:AWS_SECRET@athena.us-west-2.amazonaws.com/mydb?s3_staging_dir=s3://path/to/my/data/&driver_path=/drivers/AthenaJDBC41_2.0.6.jar
注意:如果超集在 ECS/EC2 上运行,您可以分配一个 IAM 角色,并从 URI 中删除 AWS KEY/SECRET,示例原始连接 URI 如下:
awsathena+jdbc://{aws_key}:{aws_secret}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&driver_path={driver_path}
更多信息在这里
于 2019-05-08T20:50:21.393 回答
0

当您连接到 Athena 的驱动程序时,您必须定义一个属性 s3_staging_dir。

示例:s3_staging_dir=s3://your_bucket

于 2018-02-19T14:48:01.340 回答