开发者社区> 唐恺> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

自定义LOG投递OSS数据Partition,优化你的计算

简介: 数据划分Partition OSS数据存储具有高可靠、低成本等优点,是海量数据存储的最佳选择之一,尤其适用于半结构化的日志存储,并可以结合E-MapReduce(使用Hive、Impala等计算引擎)通过schema-on-read方式加载数据做查询分析。
+关注继续查看

数据划分Partition

OSS数据存储具有高可靠、低成本的特点,是海量数据存储的最佳选择之一,尤其适用于半结构化的日志存储,并可以结合E-MapReduce(使用Hive、Impala等计算引擎)通过schema-on-read方式加载数据做查询分析。

日志作为一种时间序列(time-series)数据,指定年、月、日进行分析是一种常见做法。例如使用Hive来分析OSS上的日志:

  • 如果没有Partition,计算需要扫描整表(对应于OSS bucket前缀目录下的所有文件)
  • 如果用时间设置了Partition,只需要加载指定OSS日期目录下的Object即可

hive_partitioning

对于大部分的日志分析而言,OSS上的日志通过Partition方式来存储,通过减少计算引擎需要扫描的数据规模可以得到三个好处:

  • 缩短了数据分析的延时
  • 免去计算引擎处理额外数据产生的开销
  • 节约非必要OSS读请求产生的费用

LOG投递OSS设置Partition

阿里云LOG服务贯穿日志的整个生命周期,提供日志收集、存储、实时消费、查询、报警、投递(OSS/MaxCompute/TableStore)等功能。

log_oss_shipper

想了解如何通过LOG采集日志并投递到OSS的整个流程,可以在本文后移步用户案例:梨视频 LOG + OSS + E-MapReduce 实践。接下来要为大家介绍如何使用自定义Partition功能:

1. LOG内为Logstore配置OSS投递规则

将投递任务创建时间使用%Y,%m,%d,%H,%M等格式化生成分区字符串(格式化参考strptime API),以此来定义写到OSS的Object文件所在的目录层次结构,其中斜线/表示一级OSS目录。

日志服务的每个投递任务会写入OSS一个文件,路径格式是oss://OSS-BUCKET/OSS-PREFIX/PARTITION-FROMAT_RANDOM-ID。以创建时间2017/01/20 19:50:43的投递任务为例,说明OSS Prefix和分区格式与OSS目标文件路径关系如下:

OSS Bucket OSS Prefix 分区格式 OSS文件路径
test-bucket test-table %Y/%m/%d/%H/%M oss://test-bucket/test-table/2017/01/20/19/50/43_1484913043351525351_2850008
test-bucket log_ship_oss_example %Y/%m/%d/log_%H%M%s oss://test-bucket/log_ship_oss_example/2017/01/20/log_195043_1484913043351525351_2850008
test-bucket log_ship_oss_example %Y%m%d/%H oss://test-bucket/log_ship_oss_example/20170120/19_1484913043351525351_2850008
test-bucket log_ship_oss_example %Y%m%d/ oss://test-bucket/log_ship_oss_example/20170120/_1484913043351525351_2850008
test-bucket log_ship_oss_example %Y%m%d%H oss://test-bucket/log_ship_oss_example/2017012019_1484913043351525351_2850008

在这里设置分区格式为:%Y/%m/%d/log_%H%M%s:

oss_shipper_partitions_config

参数细节请阅读LOG投递OSS用户指南“分区格式”部分。

2. OSS数据Partition的组织形式

$./osscmd listallobject oss://test-bucket/log_ship_oss_example/
2017-01-20 19:50:53 34.83MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195043_1484913043351525351_2850008
2017-01-20 19:51:12 34.89MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195105_1484913065536560919_2850011
2017-01-20 19:51:21 34.83MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195109_1484913069790140729_2850012
2017-01-20 19:51:31 34.88MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195123_1484913083833159138_2850013
2017-01-20 19:51:44 34.99MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195136_1484913096459291992_2850016
2017-01-20 19:52:06 34.83MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195159_1484913119479868401_2850018
2017-01-20 19:52:11 34.95MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195204_1484913124490493518_2850019
2017-01-20 19:52:29 34.98MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195219_1484913139902136845_2850022
2017-01-20 19:52:42 34.90MB oss://test-bucket/log_ship_oss_example/2017/01/20/log_195235_1484913155018441825_2850025
2017-01-21 19:53:02 34.99MB oss://test-bucket/log_ship_oss_example/2017/01/21/log_195255_1484999575415811298_2850027
2017-01-21 19:53:12 34.94MB oss://test-bucket/log_ship_oss_example/2017/01/21/log_195303_1485003383961701486_2850028
2017-01-21 19:53:25 34.80MB oss://test-bucket/log_ship_oss_example/2017/01/21/log_195317_1485085997822904318_2850029
2017-01-21 19:53:48 34.97MB oss://test-bucket/log_ship_oss_example/2017/01/21/log_195340_1485077380309025973_2850032
2017-01-21 19:53:54 34.82MB oss://test-bucket/log_ship_oss_example/2017/01/21/log_195348_1485077388819212161_2850036
2017-01-21 19:54:08 34.96MB oss://test-bucket/log_ship_oss_example/2017/01/21/log_195359_1485077399681928884_2850038
2017-01-21 19:54:24 34.98MB oss://test-bucket/log_ship_oss_example/2017/01/21/log_195415_1485077415925150389_2850040
2017-01-22 19:54:53 34.82MB oss://test-bucket/log_ship_oss_example/2017/01/22/log_195441_1485086081854680230_2850044
2017-01-22 19:54:55 34.89MB oss://test-bucket/log_ship_oss_example/2017/01/22/log_195443_1485086083617274509_2850045
2017-01-22 19:55:06 34.91MB oss://test-bucket/log_ship_oss_example/2017/01/22/log_195459_1485086099107535552_2850046
2017-01-22 19:55:24 34.97MB oss://test-bucket/log_ship_oss_example/2017/01/22/log_195514_1485086114057357853_2850047
2017-01-22 19:55:44 34.97MB oss://test-bucket/log_ship_oss_example/2017/01/22/log_195537_1485086137670335428_2850051
2017-01-22 19:55:54 34.80MB oss://test-bucket/log_ship_oss_example/2017/01/22/log_195543_1485086143710253025_2850052

3. Hive使用OSS Partition

CREATE EXTERNAL TABLE log_ship_oss_example (
    time STRING,
    ip STRING,
    url STRING,
    method STRING,
    status STRING,
    user-agent STRING,
    api-version STRING
  )
  PARTITIONED BY (
    year STRING,
    mon STRING,
    day STRING
  )
  ROW FORMAT serde 'org.apache.hive.hcatalog.data.JsonSerDe'
  STORED AS TEXTFILE
  LOCATION 'oss://${AccessKeyId}:${AccessKeySecret}@test-bucket.oss-cn-hangzhou.aliyuncs.com/log_ship_oss_example';

创建外部表并加载OSS上的Partition之后,就能开始数据分析工作了。相关细节您可以参考:E-MapReduce Hive使用手册

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
LeetCode(数据库)- 锦标赛优胜者
LeetCode(数据库)- 锦标赛优胜者
19 0
【C】自定义数据类型
【C】自定义数据类型
18 0
iOS小知识: 使用bugly上报自定义错误信息进行数据监控
iOS小知识: 使用bugly上报自定义错误信息进行数据监控
205 0
阿里官方Java代码规范标准解析 - 基本数据类型与包装数据类型的使用标准
阿里官方Java代码规范标准解析 - 基本数据类型与包装数据类型的使用标准
53 0
WPF 自定义的图表(适用大量数据绘制)
原文:WPF 自定义的图表(适用大量数据绘制) 在WPF中绘制图表比较简单,有很多的第三方控件,但是在绘制大量数据的时候,就显得有些吃力,即便是自己用StreamGeometry画也达不到理想的效果,要达到绘制大量数据而不会顿卡现象,只有一个途径,就是首先在内存中绘制好所有的图形,再一次性加载(或者说绘制)到界面控件Canvas或Grid中。
878 0
JS数据类型转换规则
JS数据类型 基础类型 String Boolean Number Symbol Undefine Null(typeof(null) === "object") 复合类型: 对象 Object(Array, Json) 显示类型转换 ...
758 0
《HTML5 Canvas游戏开发实战》——3.3 自定义画板
本节书摘来自华章计算机《HTML5 Canvas游戏开发实战》一书中的第3章,第3.3节,作者:张路斌著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1100 0
用大数据把医疗行业「熊彼特化」
20世纪中期,著名奥地利经济学家约瑟夫·熊彼特(Joseph Schumpeter)提出了「创造性破坏」的理论,以此表示伴随根本性创新而发生的转型。近些年来,我们的世界已经「熊彼特化」了。数字化设备大规模高强度的渗透我们的日常生活,我们也因此根本性、一次性的改变了彼此之间,以及与我们整个社交网络的沟通方式。
1089 0
+关注
唐恺
阿里云 SLS 研发工程师
24
文章
7
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
相关文档: 混合云容灾服务 混合云备份服务 日志服务
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载