【问题标题】:How to connect Superset with AWS athena?如何将 Superset 与 AWS athena 连接?
【发布时间】:2017-05-28 16:56:11
【问题描述】:

有没有人尝试将超集连接到 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) 但我不知道如何将它与超集一起使用。有什么例子吗?

【问题讨论】:

    标签: amazon-web-services sqlalchemy amazon-athena


    【解决方案1】:

    万一有人来这里:

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

    这是来自superset documentation

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        示例:s3_staging_dir=s3://your_bucket

        【讨论】:

          【解决方案4】:

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

          1) 确保您拥有 PyAthenaJDBC pkg。已安装:

          pip install "PyAthenaJDBC>1.0.9"
          

          2) 重启超集

          3)下载JDBC驱动:来自aws driver download我用的是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}
          
          更多信息here

          【讨论】:

          • 您好,如果我使用的是 EC2 实例,我应该将驱动程序保存在哪里?
          【解决方案5】:

          我们尝试使用 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}&...
          

          我发现了这个article,这是一个很好的部署超集的指南。

          【讨论】:

          • 我应该在哪里编写pip install 命令?我已经在 EC2 实例上安装了 Superset 并通过端口访问它
          • pip - python 包管理器。你应该在你的 EC2 实例的终端中写下它
          【解决方案6】:

          来自 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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-08-06
            • 2023-03-10
            • 1970-01-01
            • 2017-09-07
            • 1970-01-01
            • 2021-03-19
            • 2019-05-27
            • 1970-01-01
            相关资源
            最近更新 更多