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

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

相关文章
|
7月前
|
Java 数据库连接 Spring
“探索Spring与MyBatis集成的最佳实践与技巧“(上)
“探索Spring与MyBatis集成的最佳实践与技巧“
23 0
|
2天前
|
设计模式 人工智能 测试技术
深入探究持续集成中的自动化测试策略
【5月更文挑战第3天】 在现代软件开发实践中,持续集成(CI)已成为提高开发效率、确保代码质量和加速产品上市速度的关键因素。自动化测试作为CI流程的核心组成部分,它确保了快速的反馈循环和高质量的构建。本文将探讨在持续集成环境中实施高效自动化测试的策略,包括测试用例的优化、测试环境的管理、以及如何整合最新的测试工具和技术。通过具体案例分析,我们将了解如何构建一个既灵活又健壮的自动化测试系统,以支持不断变化的软件开发需求。
|
5天前
|
敏捷开发 监控 测试技术
探索自动化测试工具Selenium Grid的高效集成策略
【4月更文挑战第30天】在现代Web应用的快速迭代和持续部署中,测试自动化已成为确保产品质量的关键。Selenium Grid作为一款支持多种浏览器和操作系统的测试工具,提供了并行执行测试用例的能力,极大地提升了测试效率。本文将深入探讨如何高效地将Selenium Grid集成到现有的测试框架中,以及实施过程中的最佳实践,帮助团队最大化测试覆盖率,同时降低资源消耗。
|
5天前
|
机器学习/深度学习 Python
【Python 机器学习专栏】堆叠(Stacking)集成策略详解
【4月更文挑战第30天】堆叠(Stacking)是机器学习中的集成学习策略,通过多层模型组合提升预测性能。该方法包含基础学习器和元学习器两个阶段:基础学习器使用多种模型(如决策树、SVM、神经网络)学习并产生预测;元学习器则利用这些预测结果作为新特征进行学习,生成最终预测。在Python中实现堆叠集成,需划分数据集、训练基础模型、构建新训练集、训练元学习器。堆叠集成的优势在于提高性能和灵活性,但可能增加计算复杂度和过拟合风险。
|
12天前
|
敏捷开发 缓存 Devops
构建高效持续集成系统的策略与实践
【4月更文挑战第23天】 在快速迭代的软件开发过程中,持续集成(CI)是确保代码质量和加速交付的关键。本文深入探讨了构建和维护一个高效CI系统的方法和最佳实践。从自动化测试到部署策略,文中细致分析了各环节的优化技巧,并提供了解决常见问题的实用建议。通过案例研究和工具选型,读者将获得构建强大CI流程的具体指导,以支持敏捷和DevOps环境下的高质量软件发布。
|
Java 测试技术
Java 中的单元测试和集成测试策略
【4月更文挑战第19天】本文探讨了Java开发中的单元测试和集成测试。单元测试专注于单一类或方法的功能验证,使用测试框架如JUnit,强调独立性、高覆盖率和及时更新测试用例。集成测试则验证模块间交互,通过逐步集成或模拟对象来检测系统整体功能。两者相辅相成,确保软件质量和降低修复成本。
|
1月前
|
运维 Kubernetes 监控
构建高效自动化运维系统:基于容器技术的持续集成与部署策略
【4月更文挑战第4天】在数字化转型的浪潮中,企业对于软件交付的速度和质量要求越来越高。传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文旨在探讨如何利用容器技术构建一个高效的自动化运维系统,实现软件开发生命周期中的持续集成(CI)与持续部署(CD)。通过分析容器技术的核心优势,结合DevOps文化和微服务架构,我们提出了一套系统的构建策略和实践步骤。文章将详细阐述从环境搭建到流程优化的全过程,以及在此过程中可能遇到的挑战和解决方案,为运维专业人员提供参考和指导。
|
2月前
|
敏捷开发 监控 Devops
深入探究持续集成中的自动化测试策略
【2月更文挑战第29天】随着敏捷开发和DevOps文化的普及,持续集成(CI)已成为软件开发流程中不可或缺的一部分。CI流程的核心在于快速、频繁地集成代码更改,并确保这些更改不会破坏已有功能。本文将重点探讨在持续集成环境中实施自动化测试的策略,以及如何通过有效的测试实践来提高软件质量和交付速度。我们将分析不同的测试级别、测试类型以及它们如何整合到CI流程中,同时讨论如何优化测试过程以减少反馈周期时间,并确保高质量的构建。
|
2月前
|
Kubernetes 测试技术 持续交付
探索微服务架构下的持续集成与部署最佳实践
本文将深入探讨在微服务架构下实施持续集成与部署的最佳实践,介绍如何利用现代化工具和流程来实现自动化测试、持续集成、灰度发布等关键环节,帮助开发团队提升交付效率和质量。
|
2月前
|
分布式计算 DataWorks Java
DataWorks常见问题之数据集成导出分区表的全量数据如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
45 0

热门文章

最新文章