如何解决使用 JDBC 或 ODBC 驱动程序连接到 Athena 时出现“与 Amazon Athena 通信时出现错误”错误?

2 分钟阅读
0

我在使用 Amazon Athena 和 Java Database Connectivity(JDBC)或 Open Database Connectivity(ODBC)驱动程序时遇到了连接超时问题。或者,我的商业智能工具上没有显示 Athena 查询结果。

解决方法

出现此错误,最有可能是因为安装有 JDBC 或 ODBC 驱动程序的主机和 Athena 或 AWS Glue 端点之间的连接出了问题。

要解决此错误,请检查已安装主机上的驱动程序与 Athena 或 AWS Glue 之间的连接。

**注意:**在以下步骤中,将 vpce-NAME 中的 NAME 替换为您的 VPC 端点名称。

与 Athena 的连接

为确保正常连接 Athena,请记住以下几点:

  • 您的主机可以使用 Athena 公共服务端点或 Athena 私有端点连接到 Athena。有关设置端点的更多信息,请参阅命令行选项 Boto3 文档
  • Athena 使用端口 443 连接到主机。
  • Athena 的流式传输 API 使用端口 444 来流式传输查询结果。当您使用 JDBC 或 ODBC 驱动程序时,Athena 使用此端口将查询结果流式传输到客户端主机上的驱动程序。因此,当您使用 JDBC 或 ODBC 驱动程序连接到 Athena 时,请解禁此端口。如果此端口遭到拦截,则在运行查询时,您的商业智能工具可能会超时或无法显示查询结果。

Athena 端点连接

Athena 端点看起来类似于 athena.us-east-1.amazonaws.com。在命令中输入端点时,请务必更新端点中的目标 AWS 区域。

要测试端点的连接,请根据您的操作系统(OS)运行相应命令:

**注意:**您也可以使用这些命令测试与端口 444 的连通性。

Windows

telnet athena.us-east-1.amazonaws.com 443

-或者-

Test-NetConnection -Computer_Name athena.us-east-1.amazonaws.com -Port 443

Linux 或 macOS

nc -v athena.us-east-1.amazonaws.com 443

如果您将虚拟私有云(VPC)端点用于私有 DNS,请在这些命令中将 vpce-NAME 附加到端点的开头。例如,针对私有 DNS,输入 vpce-NAME.athena.us-east-1.vpce.amazonaws.com,而不是 athena.us-east-1.vpce.amazonaws.com。将 NAME 替换为您的 VPC 的名称。有关私有 DNS 的更多信息,请参阅使用接口 VPC 端点连接到 Amazon Athena使用端点策略控制对 VPC 端点的访问

此外,请确保遵循 ODCBJDBC 驱动程序的最佳实践。例如,使用这两个驱动程序时,端口 444 必须始终处于打开状态。

连接到 AWS Glue

请务必检查您在 JDBC 或 ODBC 驱动程序上安装的主机与 AWS Glue 之间的连接。您的主机可以使用 AWS Glue 公共服务端点或 AWS Glue 私有服务端点连接到 AWS Glue。有关详细信息,请参阅 AWS Glue 服务端点。Athena 使用 AWS Glue Data Catalog 在您的账户中存储和检索 Amazon S3 数据的表元数据。因此,您的驱动程序必须成功连接到 AWS Glue 目录才能获取表元数据信息。

如果您使用 AWS Glue 公共服务端点,请使用类似于以下示例的命令测试连接:

**注意:**根据您的操作系统不同,您可能需要使用 Test-NetConnection 或 nc 来检查端口连接。

telnet glue.us-east-1.amazonaws.com 443

如果您使用 AWS Glue VPC 接口端点,请使用类似于以下示例的命令测试连接:

**注意:**如果您已关闭端点的私有 DNS,请使用以下命令。

telnet vpce-NAME.glue.us-east-1.vpce.amazonaws.com 443

相关信息

使用 ODBC 和 JDBC 驱动程序连接到 Amazon Athena

AWS 官方
AWS 官方已更新 1 年前