如何开发和测试三角洲住表管道吗
本文描述的模式可以用来开发和测试管道三角洲住表。通过管道设置,三角洲生活表允许您指定配置隔离管道在发展中,测试和生产环境。本文中的建议都适用于SQL和Python代码开发。
使用开发模式运行管道更新
三角洲生活表提供了一个界面切换控制您的管道是否更新在开发或生产模式下运行。这种模式控制管道更新处理,包括:
发展模式并不会立即终止后计算资源更新成功或失败。您可以重用相同的计算资源来运行多个更新管道无需等待一个集群开始。
发展模式并不会自动重试任务失败,允许您立即检测并修复逻辑或语法错误在你的管道。
砖推荐使用的开发模式在开发和测试期间,总是时切换到生产模式部署到生产环境中。
看到开发和生产模式。
指定一个目标模式在开发生命周期的所有阶段
δ住表中的所有数据集管道引用生活
虚拟模式,无法访问外部管道。如果指定了目标模式,生活
虚拟模式指向目标模式。审查结果写入每个表在一个更新,您必须指定一个目标模式。
您必须指定一个目标模式是独特的环境。每个表在一个给定的模式只能由单一管道更新。
通过创建单独的管道进行开发、测试和生产有不同的目标,你可以让这些环境孤立。使用目标模式参数允许您删除逻辑使用字符串插值或其他小部件或参数来控制数据源和目标。
使用砖回购协议来管理三角洲住表管道
砖建议使用回购在三角洲生活表管道开发、测试和部署到生产环境。回购使以下:
跟踪代码是如何改变的。
由多个开发人员合并更改。
代码评审等软件开发实践。
砖建议配置一个Git存储库的所有代码相关的管道。
每个开发人员都应该有自己的发展砖回购的配置。在开发过程中,用户配置自己的管道从砖回购使用开发和测试新的逻辑数据和孤立的模式和位置。开发工作完成后,用户提交和推动变化回到他们在中央Git存储库并打开一个拉请求对测试或QA部门。
由此产生的分支应该检出砖回购和管道配置使用测试数据集和开发模式。假设逻辑按预期运行,把请求或发布分支应该准备推动生产的变化。
而回购可以用来同步代码在环境中,管道设置需要保持最新手动或使用工具像起程拓殖。
这个工作流是类似于使用回购对CI / CD的砖的工作。看到CI / CD技术与Git和砖回购。
段库摄入和转换步骤
砖建议隔离摄取的查询数据转换逻辑,丰富和验证数据。你可以组织库用于摄取来自开发或测试数据源的数据在一个单独的目录从生产数据摄入逻辑,允许您轻松地配置管道各种环境。然后,您可以使用较小的数据集进行测试,加速发展。看到为开发和测试创建样本数据集。
还可以使用参数控制数据源开发、测试和生产。看到控制数据源参数。
因为δ住表管道使用生活
虚拟模式来管理所有数据集关系,通过配置开发和测试管道与摄入库加载示例数据,您可以使用生产替代样本数据集表名来测试代码。相同的转换逻辑可以在所有环境中使用。
为开发和测试创建样本数据集
砖建议创建开发和测试数据集测试管道逻辑与预期数据和潜在的畸形或腐败的记录。有多种方法来创建数据集,可以用于开发和测试,包括以下:
选择数据从生产数据集的一个子集。
使用匿名或包含PII人工生成的数据来源。
创建测试数据与基于下游转换逻辑的定义良好的结果。
预测潜在的数据损坏,畸形的记录,和上游数据变化通过创建记录,打破数据模式的期望。
例如,如果你有一个笔记本,定义了一个数据集使用下面的代码:
创建或刷新流媒体生活表input_data作为选择*从cloud_files(“/生产/数据”,“json”)
你可以创建一个示例数据集包含具体的记录使用查询如下:
创建或刷新生活表input_data作为选择“2021/09/04”作为日期,22。4作为sensor_reading联盟所有选择“2021/09/05”作为日期,21。5作为sensor_reading
下面的例子演示了过滤公布的数据创建生产数据的一个子集开发或测试:
创建或刷新生活表input_data作为选择*从刺激。input_data在哪里日期>当前日期()- - - - - -时间间隔1一天
使用这些不同的数据集,创建多个管道与笔记本电脑转换逻辑的实现。每个管道可以读取的数据LIVE.input_data
数据集但配置包括笔记本,创建特定于环境的数据集。
控制数据源参数
你可以参考参数设置在管道配置从内库。这些参数设置的键-值对先进计算> >配置部分管道设置UI。这种模式允许您指定不同的数据源配置相同的管道。
例如,您可以指定不同的路径在开发、测试和生产配置管道使用变量data_source_path
然后参考使用下面的代码:
创建流媒体生活表青铜作为(选择*,_metadata。file_path作为source_file_path从cloud_files(“$ {data_source_path}”,“csv”,地图(“头”,“真正的”)))
进口dlt从pyspark.sql.functions进口上校data_source_path=火花。相依。得到(“data_source_path”)@dlt。表def青铜():返回(火花。readStream。格式(“cloudFiles”)。选项(“cloudFiles.format”,“csv”)。选项(“头”,真正的)。负载(data_source_path)。选择(“*”,上校(“_metadata.file_path”)。别名(“source_file_name”)))
这种模式是特别有用如果你需要测试摄入逻辑如何处理模式或畸形变化数据在最初的摄入。您可以使用相同的代码在整个管道断开数据集时在所有环境中。