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

本文涉及的产品
智能数据建设与治理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集成管道提供了分区不存在时的策略,以及读取多分区的能力,以应对不同的业务场景。

相关文章
|
23天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
43 3
|
1月前
|
数据采集 安全 数据管理
深度解析:DataHub的数据集成与管理策略
【10月更文挑战第23天】DataHub 是阿里云推出的一款数据集成与管理平台,旨在帮助企业高效地处理和管理多源异构数据。作为一名已经有一定 DataHub 使用经验的技术人员,我深知其在数据集成与管理方面的强大功能。本文将从个人的角度出发,深入探讨 DataHub 的核心技术、工作原理,以及如何实现多源异构数据的高效集成、数据清洗与转换、数据权限管理和安全控制措施。通过具体的案例分析,展示 DataHub 在解决复杂数据管理问题上的优势。
258 1
|
4月前
|
监控 测试技术 持续交付
|
19天前
|
存储 测试技术 持续交付
Docker与CI/CD的集成策略及其对软件开发效率和质量的提升作用
本文探讨了Docker与CI/CD的集成策略及其对软件开发效率和质量的提升作用。首先介绍了CI/CD的基本概念,接着阐述了Docker在环境一致性、快速部署、资源隔离和轻量化方面的优势。文章还详细讨论了构建、测试和部署阶段的具体集成方法,以及集成后带来的效率提升、可靠性增强、加速交付和易于管理等好处。最后,通过案例分析展示了集成的实际效果,强调了Docker与CI/CD结合的重要性和未来前景。
33 2
|
21天前
|
Devops 测试技术 持续交付
软件测试中的自动化与持续集成:最佳实践与挑战
在快速迭代的软件开发周期中,自动化测试和持续集成(CI)已成为提高软件质量和加速产品上市的关键策略。本文探讨了自动化测试和CI的实施如何帮助开发团队提前发现缺陷、缩短反馈循环,并确保代码质量。我们将深入分析自动化测试的策略选择、工具应用以及面临的挑战,同时提供一些克服这些挑战的最佳实践。
31 0
|
2月前
|
缓存 监控 测试技术
掌握容器化持续集成/持续部署(CI/CD)的最佳实践
【10月更文挑战第8天】本文介绍了容器化持续集成/持续部署(CI/CD)的最佳实践,涵盖容器化CI/CD的概念、优势和实施步骤。通过使用容器技术,可以实现环境一致性、快速迭代和易于扩展,提高软件开发的效率和可靠性。文章还详细讨论了编写高效的Dockerfile、自动化测试、安全性、监控和日志管理等方面的最佳实践。
|
3月前
|
监控 安全 测试技术
提升软件测试效率:探索持续集成的最佳实践
在现代软件开发过程中,持续集成(CI)已成为提高软件质量和测试效率的关键实践。通过将代码库的每次提交自动构建和测试,CI 帮助团队及时发现问题,减少手动测试的负担。本文探讨了如何有效实施持续集成来优化软件测试流程,并提供了一些实用的策略和工具建议,以帮助开发团队更高效地运作。
79 2
|
4月前
|
人工智能 iOS开发 UED
详解苹果和微软的AI集成策略
详解苹果和微软的AI集成策略
详解苹果和微软的AI集成策略
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
99 1
|
4月前
|
Kubernetes jenkins 持续交付
Kubernetes CI/CD 集成:持续交付的最佳实践
【8月更文第29天】随着微服务架构和容器化的普及,Kubernetes 成为了运行容器化应用的事实标准。为了确保应用能够快速迭代并稳定发布,持续集成/持续部署(CI/CD)流程变得至关重要。本文将介绍如何将 Kubernetes 集成到 CI/CD 流程中,并提供一些最佳实践。
334 1

热门文章

最新文章