数据处理与实时分析:从基础到应用
1. 数据组织与处理
1.1 数据去重范围的权衡
在数据处理中,去重是一个重要的步骤。对于全局去重,我们可以通过限制暂存区的结构来缩小其范围,例如按年、月或周进行。这样做虽然能提高性能,但会增加出现重复数据的风险。比如,若收到一年前已接收过的重复行,就可能无法识别。因此,在安全地限制全局去重范围之前,需要仔细评估业务逻辑和源数据的性质。
1.2 数据质量检查
很多采用标准数据湖方法的组织,常担心数据湖中的数据不可信,且不同数据源的数据质量参差不齐。这是因为数据湖设计本身对摄入的数据缺乏控制,数据质量完全依赖于数据源,这对于大多数用例来说是不够的。而传统关系型仓库由于有严格的模式,能对数据进行一定的约束。
在云数据平台设计中,仓库是处理后数据的目的地,不用于数据摄入,且现有的云仓库往往缺乏传统数据库中的列级约束。因此,我们可以在数据处理管道中实施必要的质量检查,数据去重就是其中一项。常见的质量检查还包括:
- 某些列的值长度应在预定义范围内。
- 数值应在合理范围内,如工资不能为负数。
- 某些列不能包含空值,且“空”的定义因列而异。
- 值必须符合特定模式,如电子邮件列应包含有效的电子邮件地址。
以下是一个使用Spark进行数据质量检查的示例代码:
users_df = spark.read.format("csv").load(in_path)
bad_user_rows = users_df.filter("length(email) > 100