广告
返回顶部
首页 > 资讯 > 数据库 >[平台建设] 日志数据同步数仓设计
  • 622
分享到

[平台建设] 日志数据同步数仓设计

[平台建设]日志数据同步数仓设计 2019-01-19 21:01:38 622人浏览 猪猪侠
摘要

本文主要针对日志数据接入数据仓库场景进行设计, 同时介绍了下在设计接入时的一些细节,针对可能出现的问题进行必要的处理. 背景 主要针对用户流量数据、风控数据、人物画像等数据进行同步至数仓, 制

[平台建设] 日志数据同步数仓设计

本文主要针对日志数据接入数据仓库场景进行设计, 同时介绍了下在设计接入时的一些细节,针对可能出现的问题进行必要的处理.

背景

主要针对用户流量数据、风控数据、人物画像等数据进行同步至数仓, 制定数据传输格式为JSON,将用户数据解析写入Hive中,以T+1形式交付给用户,以便用户后续统计分析.

架构设计

TvswE4.png

实现细节

  1. 创建工作目录,用于记录kafka消费偏移量, 如果消费完毕将tmp后缀改为success, 第二次消费根据最后一个success后缀文件与kafka 接口计算出下次消费的偏移量数据数据.

  2. 任务启动创建lock 文件,避免调度时任务冲突,只有当第一批次任务成功完成时,再删除lock文件

  3. 自适应匹配添加字段, 通过数据字段与原始schema对比自动添加字段

  4. 在driver端代码内添加必要的日志,如消费的条数, 通过spark累加器计算executor处理失败的条数数据

  5. 针对流量数据等需要添加过滤功能, 避免测试数据或者大量的异常数据过来导致任务失败、消耗资源过多等情况,算是一个兜底的方案,
    可以根据时间字段过滤特定时间段数据 或者根据某个字段关键字进行过滤

  6. 小文件处理, 主要是在写入hdfs时候, 对写入数据进行repartition 操作,根据期望分区文件数(并行度),根据下面的udf函数随机将数据打散写入hdfs文件中

 val udf_shuffle_partition = udf((partitions: String) => {
        partitions + new Random().nextInt(parallelismPerPartiton)
     })

总结

本文主要针对日志数据接入数据仓库场景进行设计, 同时介绍了下在设计接入时的一些细节,针对可能出现的问题进行必要的处理.

本文作者: chaplinthink, 关注领域:大数据、基础架构、系统设计, 一个热爱学习、分享的大数据工程师
您可能感兴趣的文档:

--结束END--

本文标题: [平台建设] 日志数据同步数仓设计

本文链接: https://www.lsjlt.com/news/9056.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作