PrestoDB 和 Trino

本页面介绍了如何将 Looker 连接到 PrestoDBTrino

对网络流量进行加密

最佳做法是对 Looker 应用和数据库之间的网络流量进行加密。不妨考虑启用安全的数据库访问文档页面中介绍的选项之一。

创建 Looker 与数据库的连接

在 Looker 的管理部分中,选择连接,然后点击添加连接

填写连接详情。大多数设置对大多数数据库方言都是通用的。如需了解详情,请参阅将 Looker 连接到您的数据库文档页面。下面介绍了一些设置:

  • 方言:选择 PrestoDBTrino

    PrestoSQL 已更名为 Trino。如果您使用的是低于 352 的 Trino 版本,请从 Looker 方言菜单中选择 PrestoSQL

  • 主机:数据库主机名。

  • 端口:数据库端口。默认端口为 8080。

  • 数据库:“目录”或“连接器”使用 Presto 术语定义。

  • 用户名:将运行查询的用户的用户名。

    只有在启用 SSL 的情况下,系统才会将此信息发送到数据库服务器。

  • 密码:将运行查询的用户的密码。

    只有在启用 SSL 的情况下,系统才会将此信息发送到数据库服务器。

  • 架构:未指定架构时要使用的默认架构。

  • Authentication:选择数据库账号OAuth

    • 使用数据库账号指定用于连接到 Looker 的数据库用户账号的用户名密码
    • 如果您想为连接配置 OAuth,请使用 OAuth
  • 启用 PDT:使用此切换开关可启用永久性派生表 (PDT)。这会显示该连接的其他 PDT 字段和 PDT 替换项部分。

  • 临时数据库:用于写入 PDT 的架构。(版本 3.50 为 Presto 添加了对 PDT 的支持。如需详细了解如何配置 Presto 以支持 PDT,请参阅本页面中的为 PDT 配置 PrestoDB 或 Trino 部分)。

  • 其他 JDBC 参数PrestoDB JDBC 驱动程序Trino JDBC 驱动程序Starburst JDBC 驱动程序中的任何其他参数。

  • SSL:勾选此选项可启用 SSL 连接。

  • 验证 SSL:请忽略此字段。所有 SSL 连接都将使用默认的 Java Truststore,除非另有指示,使用 PrestoDB JDBC 参数Trino JDBC 驱动程序Starburst JDBC 驱动程序。在其他 JDBC 参数字段中输入这些参数。

如需验证连接是否成功,请点击测试。如需了解问题排查信息,请参阅测试数据库连接文档页面。

要保存这些设置,请点击连接

如需详细了解连接设置,请参阅将 Looker 连接到数据库文档页面。

为 PDT 配置 PrestoDB 或 Trino

使用 OAuth 的连接不支持 PDT。

PDT 支持取决于您与 PrestoDB 或 Trino 搭配使用的连接器。本部分介绍了暂存数据库的必要配置设置。此示例假定您使用的连接器是 hive

Hive 目录属性文件应包含一些配置属性,这些属性在本部分中进行了介绍。

以下是必需的,因为 Presto 会缓存 Hive Metastore 结果,而 Looker 需要能够立即查看这些表:

hive.metastore-cache-ttl = 0s

这两个属性是必需的,因为 Looker 需要能够删除和重命名 PDT:

hive.allow-rename-table=true
hive.allow-drop-table=true

请注意,在内部 Presto 测试服务器中,我们使用以下 hive.properties 文件,该文件适用于所有 Hive 架构:

hive.s3.connect-timeout=1m
hive.s3.max-backoff-time=10m
hive.s3.max-error-retries=50
hive.metastore-cache-ttl = 0s
hive.metastore-refresh-interval = 5s
hive.s3.max-connections=500
hive.s3.max-client-retries=50
connector.name=hive-hadoop2
hive.s3.socket-timeout=2m
hive.s3.staging-directory=/mnt/tmp/
hive.s3.use-instance-credentials=true
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
hive.parquet.use-column-names=true
hive.allow-drop-table=true
hive.metastore.uri=thrift://<metastore-server>:9083
hive.storage-format=ORC
hive.allow-rename-table=true

为 Trino 连接配置 OAuth

Looker 支持 Trino 连接的 OAuth,这意味着每个 Looker 用户都需要对数据库进行身份验证,并授权 Looker 使用自己的 OAuth 用户账号对数据库运行查询。

利用 OAuth,数据库管理员可以执行以下任务:

  • 审核哪些 Looker 用户正在针对数据库运行查询
  • 使用数据库级权限实施基于角色的访问权限控制
  • 对访问数据库的所有进程和操作使用 OAuth 令牌,而不是在多个位置嵌入数据库 ID 和密码
  • 直接通过数据库撤消给定用户的授权

对于使用 OAuth 的 Trino 关联,当 OAuth 令牌过期时,用户必须定期重新登录。

请注意以下数据库级 OAuth 连接:

  • 如果用户允许其 OAuth 令牌过期,则其拥有的任何时间表或提醒都会受到影响。为防止这种情况,Looker 会在当前有效的 OAuth 令牌过期之前,向每个时间表和每个提醒的所有者发送一封通知电子邮件。Looker 会在令牌到期前 14 天、7 天和 1 天发送这些通知电子邮件。用户可以前往其 Looker 用户页面,重新授权 Looker 访问数据库,从而避免其时间表和提醒中断。如需了解详情,请参阅对用户账号设置进行个性化设置文档页面。
  • 由于使用 OAuth 的数据库连接是“按用户”的,因此缓存政策也是按用户的,而不仅仅是按查询。也就是说,Looker 只会在缓存期限内同一用户运行了同一查询时使用缓存结果,而不是在缓存期限内每次运行同一查询时都使用缓存结果。如需详细了解缓存,请参阅缓存查询文档页面。
  • 使用 OAuth 的 Trino 连接不支持永久性派生表 (PDT)
  • 当 Looker 管理员以 sudo 作为其他用户时,管理员将使用该用户的 OAuth 访问令牌。如果用户的访问令牌已过期,管理员将无法代表 sudoed 用户创建新令牌。如需了解如何使用 sudo 命令,请参阅用户文档页面。
  • 使用 OAuth 从 Looker 登录 Azure AD 时,Looker 不会显示明确的用户意见征求对话框。设置 Looker OAuth,即表示您明确同意 Looker 实例访问您的 Trino 数据。

注册应用

如需为 Trino 启用 OAuth,请先使用受支持的身份提供程序注册应用。Looker 仅支持使用 Microsoft Entra ID(以前称为 Azure AD)通过 Trino 进行 OAuth。

前提条件

  • 您必须有 Azure 订阅。
  • 您必须在 Microsoft Entra ID 中拥有管理员权限。

如需注册应用,请按以下步骤操作:

  1. 转到 Azure 门户并使用您的凭据登录。
  2. 在 Azure 门户搜索栏中,搜索“Microsoft Entra ID”,然后从结果中选择该服务。
  3. 在 Microsoft Entra ID 服务中,点击管理类别的应用注册部分中的新注册
  4. 请按以下步骤填写注册表单:
    • Name:为应用提供描述性名称,例如 Looker Trino Connection
    • 支持的账号类型:根据您所需的访问权限限制方式选择相应的选项。对于内部用例,您可以选择仅限此组织目录中的账号
    • 重定向 URI:选择网页平台,然后输入您的 Looker 重定向 URI。它应类似于 https://YOUR_LOOKER_HOSTNAME/external_oath/redirect
  5. 点击注册
  6. 收集 Client IDTenant IDClient Secret,以便稍后输入 Looker 连接。
    • 您可以在概览页面上找到客户端 ID租户 ID
    • 如果您不知道自己的客户端密钥,则需要创建一个新的客户端密钥。点击管理部分中的证书和密钥,然后点击新建客户端密钥
  7. 点击管理部分中的公开 API
  8. 点击应用 ID URI 旁边的添加
  9. 输入您的客户端 ID。网址应为以下格式:api://CLIENT_ID

接下来,在 Azure 门户中按照以下步骤创建一个用于 Looker 的新范围:

  1. 此 API 定义的范围部分中点击添加范围
  2. 为新范围添加范围名称。Looker 预计您的范围名称为:TrinoUsers.Read.All

    名称 TrinoUsers.Read.All 暗示了只读权限,但该名称本身实际上不会设置或强制执行任何权限。请务必将范围设置为只允许对数据库进行读取访问。

  3. 添加显示名称说明

  4. 谁可以同意?选择器中,选择管理员和用户

  5. 点击添加范围

  6. 已获授权的客户端应用部分中,点击添加客户端应用

  7. 输入您的客户端 ID 和新创建的范围。

  8. 点击 Add Application(添加应用)。

接下来,如需向 Looker 授予必要的 API 权限,请按以下步骤操作:

  1. 管理部分,点击 API 权限
  2. 点击添加权限
  3. 选择顶部的我的 API 标签页。
  4. 在应用注册列表中,选择您刚刚创建的注册,例如 Looker Trino Connection
  5. 选中委托的权限复选框。
  6. 选中 TrinoUsers.Read.All 复选框。
  7. 选择添加权限

配置数据库以使用 OAuth

接下来,如需将 Trino 数据库配置为使用 OAuth,请将以下代码行添加到 Trino config.properties 文件中。(将前五行大写变量替换为您自己的值。)

  • YOUR_HTTPS_PORT
  • PATH_TO_YOUR_SSL_CERTIFICATE
  • YOUR_TENANT_ID
  • YOUR_CLIENT_ID
  • YOUR_SHARED_SECRET
# enable SSL for OAuth
http-server.https.enabled=true
http-server.https.port=YOUR_HTTPS_PORT
http-server.https.keystore.path=PATH_TO_YOUR_SSL_CERTIFICATE

# enable OAuth 2.0
http-server.authentication.type=oauth2
http-server.authentication.oauth2.issuer=https://sts.windows.net/YOUR_TENANT_ID/
http-server.authentication.oauth2.client-id=NA_required_but_not_used
http-server.authentication.oauth2.client-secret=NA_required_but_not_used

# turn off oidc discovery - Trino will inspect tokens locally instead
http-server.authentication.oauth2.oidc.discovery=false

# URLs that Trino requires for OAuth
http-server.authentication.oauth2.jwks-url=https://login.microsoftonline.com/common/discovery/v2.0/keys
http-server.authentication.oauth2.auth-url=NA_required_but_not_used
http-server.authentication.oauth2.token-url=NA_required_but_not_used

# add audience that matches the Azure AD's Application ID URI
http-server.authentication.oauth2.additional-audiences=api://YOUR_CLIENT_ID

# set shared-secret required for internal Trino communication when authentication is enabled, see: https://github.com/trinodb/trino/issues/12397
# can be generated with the following Linux command: openssl rand 512 | base64
internal-communication.shared-secret=YOUR_SHARED_SECRET

# optionally, allow some insecure http traffic
# http-server.authentication.allow-insecure-over-http=true

登录以运行查询

将数据库连接设置为使用 OAuth 后,系统会提示用户在运行查询之前登录 Microsoft Entra ID。这包括来自探索、信息中心、Look 和 SQL Runner 的查询。

用户还可以通过账号页面上的 OAuth 连接凭据部分登录 Microsoft Entra ID。

如需使用 Looker 登录 Microsoft Entra ID,请执行以下操作:

  1. 点击 Looker 用户菜单。
  2. 选择账号
  3. 账号页面上,点击OAuth 连接凭据部分中的登录

此操作将显示登录对话框。输入您的 Microsoft Entra ID 凭据,然后选择登录,以向 Looker 授予对您数据库账号的访问权限。

通过 Looker 登录 Microsoft Entra ID 后,您可以随时通过账号页面退出或重新授权凭据,如个性化您的用户账号文档页面中所述。

参考

如需详细了解如何配置 Hive 连接器,请参阅 PrestoDB Hive 连接器Trino Hive 连接器Starburst Hive 连接器

功能支持

为了让 Looker 支持某些功能,您的数据库方言也必须支持这些功能。

从 Looker 24.16 开始,PrestoDB 支持以下功能:

特征 是否支持?
支持级别
支持
Looker (Google Cloud Core)
对称汇总
派生表
永久性 SQL 派生表
永久性原生派生表
稳定视图
查询终止
基于 SQL 的转换
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
列表类型
百分位
不同百分位
SQL Runner 显示进程
SQL Runner 描述表
SQL Runner 显示索引
SQL Runner Select 10
SQL 运行程序数量
SQL 说明
Oauth 凭据
上下文注释
连接池
HLL 草图
聚合感知
增量 PDT
毫秒
微秒
具体化视图
近似计数不同

从 Looker 24.16 开始,Trino 支持以下功能:

特征 是否支持?
支持级别
支持
Looker (Google Cloud Core)
对称汇总
派生表
永久性 SQL 派生表
永久性原生派生表
稳定视图
查询终止
基于 SQL 的转换
时区
SSL
小计
JDBC 其他参数
区分大小写
位置类型
列表类型
百分位
不同百分位
SQL Runner 显示进程
SQL Runner 描述表
SQL Runner 显示索引
SQL Runner Select 10
SQL 运行程序数量
SQL 说明
OAuth 凭据
上下文注释
连接池
HLL 草图
聚合感知
增量 PDT
毫秒
微秒
具体化视图
近似计数不同

后续步骤

将数据库连接到 Looker 后,请为用户配置登录选项