数据集成最佳实践:分区表作为来源表时的处理策略

本文涉及的产品
智能数据建设与治理Dataphin,200数据处理单元
简介: 分区表是指拥有分区空间的表,在集成任务中指定来源表的分区数据进行抽取,可以避免全表扫描,提高处理效率。但是来源表为分区表时也会遇到一些问题,如某些分区不存在,或者是需要抽取多个分区的数据,下面介绍一下Dataphin为这些场景提供的对应能力。

一、概念解释

分区表是指拥有分区空间的表,即在创建表时指定表内的一个或者某几个字段作为分区列。分区表实际就是对应分布式文件系统上的独立的文件夹,一个分区对应一个文件夹,文件夹下是对应分区所有的数据文件。分区可以理解为分类,通过分类把不同类型的数据放到不同的目录下。分类的标准就是分区字段,可以是一个,也可以是多个。分区表的意义在于优化查询。查询表时通过指定所需查询的分区,避免全表扫描,提高处理效率,降低计算费用。使用数据时,如果指定需要访问的分区名称,则只会读取相应的分区。

在Dataphin的集成管道中,MaxCompute、Hive和TDH Inceptor组件中,选择表后会判断是否是分区表,如果是分区表的话则需要填写分区配置。

二、场景及功能

场景一:某企业有一个每天定时调度的集成任务,来源表是一张MaxCompute的分区表,每天会抽取ds=${bizdate}的分区数据进行数据同步。某天该集成任务运行失败了,原因是前一天因某种原因未产生当日业务数据,所以没有产生当日分区,此时集成任务抽取该表的ds=${bizdate}分区会发现该分区不存在,导致任务失败,然后导致后续链路上的任务也无法进行调度运行,数据无法产出。未产生该分区的原因可能是因为当日就是没有产生数据,对业务来说属于正常情况;也可能未产生分区属于异常情况,需要及时被感知并处理。

对应功能:MaxCompute、Hive、TDH Inceptor输入组件支持分区不存在时的选择策略。MaxCompute输入组件支持“置任务失败”、“置任务成功,无数据写入”和“使用最新非空分区”策略;Hive、TDH Inceptor输入组件支持“置任务失败”和“置任务成功,无数据写入”策略。

【Dataphin V3.9及以上支持该功能】

  • 如果下游任务一定依赖当日分区的数据才可运行,选择“置任务失败”策略,在当日分区没有及时产出时,集成任务运行时找不到分区便会置任务失败,并及时告警运维人员异常情况,及时处理修复。
  • 如果在特定业务场景下,不一定每天会产生分区,可以选择“置任务成功,无数据写入”,集成任务调度时如没有抽取到该分区,任务也会运行成功,支持没有数据写入,这样可以不阻塞下游任务的运行。
  • 如果来源表是一张维表,每日数据的变动基本不大,后续任务在产出时间上有要求,但对于这张维表的当日变化感知不强,可以考虑选择“使用最新非空分区”策略,在当日分区没有及时产出时,使用最新非空分区的数据进行下游任务的数据处理。

场景二:某企业的业务数据有可能会延后录入数据库,比如每天都会收集并更新前七天的数据库到指定的日期分区中。此时就需要创建一个每天调度的集成任务抽取运行当日的业务时间及之前六天的共七个分区数据到中台然后进行后续的数据处理。

对应功能:MaxCompute、Hive、TDH Inceptor输入组件支持抽取多分区数据。

【Dataphin V3.10及以上支持该功能】

抽取单分区数据时,可以直接输入等式来指定需要读取的分区,如ds=${bizdate}。如果需要抽取多个分区的数据,如上述场景所述,每天都需要抽取业务时间及之前六天的七个分区,可以在集成管道属性配置中配置一个参数作为集成任务调度时业务时间的七天前,例如seven_days=${yyyymmdd-7},然后在输入组件的分区配置中使用 /*query*/ds>${seven_days}的语法来指定抽取这天之后的所有分区。需注意的是,抽取多分区需要在条件上加上 /*query*/再写条件。

三、总结

当来源表为分区表时,Dataphin集成管道提供了分区不存在时的策略,以及读取多分区的能力,以应对不同的业务场景。

相关文章
|
17天前
|
数据采集 安全 数据管理
深度解析:DataHub的数据集成与管理策略
【10月更文挑战第23天】DataHub 是阿里云推出的一款数据集成与管理平台,旨在帮助企业高效地处理和管理多源异构数据。作为一名已经有一定 DataHub 使用经验的技术人员,我深知其在数据集成与管理方面的强大功能。本文将从个人的角度出发,深入探讨 DataHub 的核心技术、工作原理,以及如何实现多源异构数据的高效集成、数据清洗与转换、数据权限管理和安全控制措施。通过具体的案例分析,展示 DataHub 在解决复杂数据管理问题上的优势。
67 1
|
3月前
|
监控 测试技术 持续交付
|
4月前
|
SQL 安全 Java
探索软件测试的多维策略:从单元到集成,再到性能与安全
在软件开发生命周期中,测试是不可或缺的一环。本文将深入探讨软件测试的多维策略,从单元测试、集成测试到性能测试和安全测试等各个层面进行剖析。我们将通过具体的统计数据和案例分析,揭示不同测试策略的优势和应用场景。文章旨在为读者提供一个全面的测试框架,帮助他们构建更稳定、高效和安全的系统。
95 2
|
1月前
|
缓存 监控 测试技术
掌握容器化持续集成/持续部署(CI/CD)的最佳实践
【10月更文挑战第8天】本文介绍了容器化持续集成/持续部署(CI/CD)的最佳实践,涵盖容器化CI/CD的概念、优势和实施步骤。通过使用容器技术,可以实现环境一致性、快速迭代和易于扩展,提高软件开发的效率和可靠性。文章还详细讨论了编写高效的Dockerfile、自动化测试、安全性、监控和日志管理等方面的最佳实践。
|
2月前
|
监控 安全 测试技术
提升软件测试效率:探索持续集成的最佳实践
在现代软件开发过程中,持续集成(CI)已成为提高软件质量和测试效率的关键实践。通过将代码库的每次提交自动构建和测试,CI 帮助团队及时发现问题,减少手动测试的负担。本文探讨了如何有效实施持续集成来优化软件测试流程,并提供了一些实用的策略和工具建议,以帮助开发团队更高效地运作。
75 2
|
3月前
|
人工智能 iOS开发 UED
详解苹果和微软的AI集成策略
详解苹果和微软的AI集成策略
详解苹果和微软的AI集成策略
|
3月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
82 1
|
3月前
|
Kubernetes jenkins 持续交付
Kubernetes CI/CD 集成:持续交付的最佳实践
【8月更文第29天】随着微服务架构和容器化的普及,Kubernetes 成为了运行容器化应用的事实标准。为了确保应用能够快速迭代并稳定发布,持续集成/持续部署(CI/CD)流程变得至关重要。本文将介绍如何将 Kubernetes 集成到 CI/CD 流程中,并提供一些最佳实践。
251 1
|
3月前
|
消息中间件 Java 网络架构
AMQP与微服务架构的集成策略
【8月更文第28天】在微服务架构中,各个服务通常通过HTTP/REST、gRPC等协议进行交互。虽然这些方法在很多场景下工作得很好,但在需要高并发、低延迟或需要处理大量消息的情况下,传统的同步调用方式可能无法满足需求。此时,AMQP作为异步通信的一种标准协议,可以提供一种更为灵活和高效的消息传递机制。
34 1
|
3月前
|
监控 测试技术 持续交付
持续集成与持续交付的最佳实践
【8月更文挑战第15天】持续集成和持续交付是现代软件开发中的重要实践,它们通过自动化和频繁地集成代码、构建、测试和部署,帮助团队更快地交付高质量的软件。通过遵循最佳实践,团队可以优化其持续集成和持续交付的流程,提高开发效率和软件质量。希望本文的分享能够为开发团队提供有益的参考和指导。

热门文章

最新文章