tencent cloud

日志服务

动态与公告
产品动态
公告
新手指引
产品简介
产品概述
产品优势
地域和访问域名
规格与限制
基本概念
购买指南
计费概述
产品定价
按量计费(后付费)
欠费说明
清理日志服务资源
成本优化
常见问题
快速入门
一分钟入门指南
入门指南
使用 Demo 日志快速体验 CLS
操作指南
资源管理
权限管理
日志采集
指标采集
日志存储
指标存储
检索分析(日志主题)
检索分析(指标主题)
仪表盘
数据处理
投递与消费
监控告警
云产品中心
DataSight 独立控制台
历史文档
实践教程
日志采集
检索分析
仪表盘
监控告警
投递和消费
成本优化
开发者指南
通过 iframe 内嵌 CLS(旧方案)
通过 Grafana 使用 CLS
API 文档
History
Introduction
API Category
Making API Requests
Topic Management APIs
Log Set Management APIs
Index APIs
Topic Partition APIs
Machine Group APIs
Collection Configuration APIs
Log APIs
Metric APIs
Alarm Policy APIs
Data Processing APIs
Kafka Protocol Consumption APIs
CKafka Shipping Task APIs
Kafka Data Subscription APIs
COS Shipping Task APIs
SCF Delivery Task APIs
Scheduled SQL Analysis APIs
COS Data Import Task APIs
Data Types
Error Codes
常见问题
健康监测问题解释
采集相关
检索分析相关
其他问题
服务等级协议
CLS 政策
隐私协议
数据处理和安全协议
联系我们
词汇表
文档日志服务实践教程投递和消费使用 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;


帮助和支持

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

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

文档反馈