日志同步工具_日志数据库

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

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

背景

主要针对用户流量数据、风控数据、人物画像等数据进行同步至数仓, 制定数据传输格式为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, 关注领域:大数据、基础架构、系统设计, 一个热爱学习、分享的大数据工程师

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5568.html

(0)
上一篇 2023-05-03
下一篇 2023-05-04

相关推荐

  • 由delete引起的锁扩大[亲测有效]

    由delete引起的锁扩大[亲测有效]由delete引起的锁扩大 阿里云月报中的一句话,出处:http://mysql.taobao.org/monthly/2022/01/01/ 但是Ghost Record是可以跟正常的Record一

    2023-05-07
    172
  • 极致效率,云原生数据库TDSQL-C安身立命的根本「建议收藏」

    极致效率,云原生数据库TDSQL-C安身立命的根本「建议收藏」云原生时代需要什么样的数据库?如何构建数据库服务?腾讯云数据库技术负责人程彬认为,云数据库未来趋势会从以托管为核心升级到以极致效率为核心,助力业务降本增效。从数据库管理和应用角度来看,云厂商、资源、客

    2023-05-23
    183
  • 通过Python收集MySQL MHA 部署及运行状态信息的功能实现[亲测有效]

    通过Python收集MySQL MHA 部署及运行状态信息的功能实现[亲测有效]一. 背景介绍 当集团的MySQL数据库实例数达到2000+、MHA集群规模数百个时,对MHA的及时、高效管理是DBA必须面对的一个挑战。MHA 集群 节点信息 和 运行状态 是管理的基础。本篇幅主要

    2023-04-23
    154
  • Redis | 第5章 Redis 中的持久化技术《Redis设计与实现》[通俗易懂]

    Redis | 第5章 Redis 中的持久化技术《Redis设计与实现》[通俗易懂](第5章 Redis 中的持久化技术) 前言 参考资料:《Redis设计与实现 第二版》; 第二部分为单机数据库的实现,主要由以下模块组成:数据库、持久化、事件、客户端与服务器; 本篇将介绍 Redi

    2023-04-30
    150
  • 使用Flask开发多线程应用

    使用Flask开发多线程应用Flask是一款轻量的Web框架,易于学习和使用。它既可以用来编写小型应用程序,也可以用于构建大型的Web应用。随着Web应用越来越复杂,多线程编程也成为一个需要考虑的问题。在本文中,我们将介绍如何使用Flask开发多线程应用,来提高程序的处理性能。

    2024-06-04
    46
  • Python assertions:一种异常处理方式

    Python assertions:一种异常处理方式在Python中,有一个很常用的异常处理方式被称为“assertions”,它可以用来测试一个条件是否为真,并在条件不为真时提出异常。在本文中,我们将深入探讨Python中的assertions。

    2024-02-24
    113
  • mysql中复制的优点_elasticsearch fielddata

    mysql中复制的优点_elasticsearch fielddata摘要:本文通过介绍GaussDB(for MySQL)读写路径,分析其可用性。 简介 数据持久性和服务可用性是数据库服务的关键特征。 在实践中,通常认为拥有 3 份数据副本,就足以保证持久性。 但是…

    2023-04-01
    138
  • Python多行输入实现

    Python多行输入实现在Python中实现多行输入是一项常见任务。多行输入通常用于读取用户输入的多行文本,或者读取包含多行文本的文件。Python提供了多种方法来实现多行输入,本文将阐述这些方法的优缺点,并提供代码示例,帮助读者更好地理解Python的多行输入实现。

    2024-08-31
    21

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注