tencent cloud

日志服务

文档日志服务实践教程投递和消费使用 DLC(Hive)分析 CLS 日志

使用 DLC(Hive)分析 CLS 日志

PDF
聚焦模式
字号
最后更新时间: 2026-01-07 16:23:32

概述

当您需要将日志服务 CLS 中的日志投递到 Hive 进行 OLAP 计算时,可以参考本文进行实践。您可以通过腾讯云数据湖计算 DLC(Data Lake Compute,DLC)提供的数据分析与计算服务,完成对日志的离线计算和分析。

操作步骤

CLS 日志投递至 COS

创建投递任务

1. 登录日志服务控制台,选择左侧导航栏中的 投递任务管理 > 投递至COS
2. 在“投递至COS” 页面中,单击添加投递配置,在弹出的“投递至COS”窗口中,配置并创建投递任务。 如下配置项需要注意:
配置项
注意事项
目录前缀
日志文件会投递到对象存储桶的该目录下。在数据仓库模型中,一般对应为 table location 的地址。
分区格式
投递任务可按照创建时间进行自动分区,分区格式建议按照 hive 分区表格式指定。例如,按天分区可以设置为 /dt=%Y%m%d/test,其中 dt= 代表分区字段,%Y%m%d 代表年月日,test 代表日志文件前缀,因投递文件默认是以下划线(_)开头,大数据计算引擎会将这类文件忽略,导致查询不到数据,故需增加一个前缀,实际分区目录名称为 dt=20220424
投递间隔时间
可在5 - 15分钟范围内选择,建议选择15分钟,250MB,这样文件数量会比较少,查询性能更佳。
投递格式
推荐 JSON 格式。

查看投递任务结果

通常在启动投递任务15分钟后,可以在对象存储控制台查看到日志数据,如果在 log_data 日志集设置了按天分区,则目录结构类似下图,分区目录下包含具体的日志文件。

DLC(Hive)分析

DLC 创建外部表并映射到对象存储日志目录

日志数据投递至对象存储后,即可通过 DLC 控制台 → 数据探索功能创建外部表,建表语句可参考如下 SQL 示例,需特别注意分区字段以及 location 字段要与目录结构保持一致。
DLC 创建外表向导提供高级选项,可以帮助您推断数据文件表结构自动快捷生成 SQL,因为是采样推断所以需要您进一步根据 SQL 判断表字段是否合理,例如以下案例,TIMESTAMP 字段推断出为 int,但可能 bigint 才够用。
CREATE EXTERNAL TABLE IF NOT EXISTS `DataLakeCatalog`.`test`.`log_data` (
`__FILENAME__` string,
`__SOURCE__` string,
`__TIMESTAMP__` bigint,
`appId` string,
`caller` string,
`consumeTime` string,
`data` string,
`datacontenttype` string,
`deliveryStatus` string,
`errorResponse` string,
`eventRuleId` string,
`eventbusId` string,
`eventbusType` string,
`id` string,
`logTime` string,
`region` string,
`requestId` string,
`retryNum` string,
`source` string,
`sourceType` string,
`specversion` string,
`status` string,
`subject` string,
`tags` string,
`targetId` string,
`targetSource` string,
`time` string,
`type` string,
`uin` string
) PARTITIONED BY (`dt` string) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS TEXTFILE LOCATION 'cosn://coreywei-1253240642/log_data/'
如果是按分区投递,location 需要指向 cosn://coreywei-1253240642/log_data/ 目录,而不是 cosn://coreywei-1253240642/log_data/20220423/ 目录。
使用推断功能,需要将目录指向数据文件所在的子目录即:cosn://coreywei-1253240642/log_data/20220423/ 目录,推断完成后在 SQL 中 location 修改回 cosn://coreywei-1253240642/log_data/ 目录即可。
适当分区会提升性能,但分区总数建议不超过1万。

添加分区

分区表需要在添加分区数据后,才能通过 select 语句获取数据。您可以通过如下两种方式添加分区:
历史分区添加
增量分区添加
该方案可一次性加载所有分区数据,运行较慢,适用首次加载较多分区场景。
msck repair table DataLakeCatalog.test.log_data;
在加载完历史分区之后,增量分区还会定期增加。例如,每天新增一个分区,则可以通过该方案进行增量添加。
alter table DataLakeCatalog.test.log_data add partition(dt='20220424')

分析数据

添加完分区后,即可通过 DLC 进行数据开发或分析。
select dt,count(1) from `DataLakeCatalog`.`test`.`log_data` group by dt;


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈