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 连接。

  • Verify 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 支持将 OAuth 用于 Trino 连接,这意味着每个 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. 收集客户端 ID租户 ID客户端密钥,以便稍后输入到您的 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. Account(帐号)页面上,点击 OAuth Connection Credentials(OAuth 连接凭据)部分中的 Log In(登录)。

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

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

参考

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

功能支持

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

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

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

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

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

后续步骤

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