你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

查询日志记录

重要

此功能目前以预览版提供。 Microsoft Azure 预览版的补充使用条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的更多法律条款。 有关此特定预览版的信息,请参阅 Azure HDInsight on AKS 预览版信息。 如有疑问或功能建议,请在 AskHDInsight 上提交请求并附上详细信息,并在 Azure HDInsight Community 上关注我们以了解更多更新。

Trino 支持自定义事件侦听器,可用于侦听查询生命周期事件。 你可以创建自己的事件侦听器,或使用 HDInsight on AKS 提供的内置插件将事件记录到 Azure Blob 存储。

可以通过两种方式启用内置查询日志记录:

本文介绍如何使用 ARM 模板将查询日志记录添加到群集。

先决条件

启用查询日志记录

若要在 Trino 群集中启用内置查询日志记录插件,请在群集 ARM 模板中添加/更新 clusterProfile.trinoProfile.userTelemetrySpec 部分,其中包含以下属性。

properties 说明
path 用作根目录的目录的完全限定路径,用于捕获不同的查询日志。
hivecatalogName 该目录用于将外部表挂载到存储帐户中写入的文件上。 必须在群集添加配置单元目录中添加此目录。
hivecatalogSchema 查询日志记录插件使用此架构来安装日志的外部表,如果该架构尚不存在,则插件会创建此架构。 默认值 - trinologs
partitionRetentionInDays 查询日志记录插件会删除日志表中早于指定配置的分区。 默认值 - 365

以下示例演示了如何在 Trino 群集中启用查询日志记录。 在 ARM 模板中的 [*].properties.clusterProfile 下添加此示例 json。

       "trinoProfile": { 
          "userTelemetrySpec": { 
          "storage": { 
              "path": "https://querylogstorageaccount.blob.core.windows.net/logs/trinoquerylogs", 
              "hivecatalogName": "hive", 
              "hivecatalogSchema": "trinologs", 
              "partitionRetentionInDays": 365 
          } 
          }
      }   

部署已更新的 ARM 模板以反映群集中的更改。 了解如何部署 ARM 模板

注意

  • 插件使用与群集绑定的用户分配的托管标识 (MSI) 对存储进行身份验证,请添加对 MSI 的 ContributorStorage Blob Data Owner 访问权限,以确保插件能够将日志写入存储帐户。
    用户分配的 MSI 名称列在群集资源 JSON 的 msiResourceId 属性中。 了解如何分配角色

  • PartitionRetentionInDays 仅从装载的表中移除元数据分区,而不会删除数据。 请根据需要清理不再需要的数据。

元数据管理

如果用户在 hiveCatalogName 属性中指定目录名称,插件会将存储帐户中写入的日志文件挂载为外部表和视图,可以通过 Trino 查询这些文件。

该插件将创建三个表和三个视图,可用于查询生命周期事件(QueryCompletedEventQueryCreatedEventSplitCompletedEVent)。 这些表和视图是在作为用户输入提供的目录和架构下创建的。

表名:

  • querycompleted:包含 Trino 触发的 QueryCompleted 事件。
  • querycreated:包含 Trino 触发的 QueryCreatedEvents
  • splitcompleted:包含 Trino 触发的 SplitCompletedEvents

视图名:

  • vquerycompleted
  • vquerycreated
  • vsplitcompleted

注意

建议用户使用视图,因为它们不受基础架构更改和所描述表的帐户的影响。

表存档

在用户决定更改日志的 path 或外部位置的情况下,插件支持存档 (N-1) 表。 如果发生这种情况,插件会将指向旧路径的表重命名为 <table_name>_archived,在这种情况下,创建的视图将合并当前表和已存档表的结果。

创建自定义插件

你还可以创建自定义事件侦听器插件,按照文档(按照插件部署步骤部署自定义插件)中的说明进行操作。