
1) 【一句话结论】
在大数据多源异构场景下,需通过分层数据治理(元数据管理、数据质量规则、转换流程),结合ETL工具(如Flink、NiFi)和动态校验规则,构建标准化数据清洗与转换流程,确保数据一致性,并通过监控反馈优化,最终实现数据质量提升(如缺失率从X%降至Y%,异常率从Z%降至W%)。
2) 【原理/概念讲解】
老师口吻解释核心概念:
数据清洗是处理数据质量问题(缺失、冗余、异常),数据转换是将异构数据映射为统一结构。数据治理策略包括:
3) 【对比与适用场景】
| 方式/工具 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 批处理(如Apache Hive) | 定期处理历史数据 | 适合离线、数据量大 | 数据仓库构建、批量清洗 | 实时性差 |
| 流处理(如Apache Flink) | 实时处理数据流 | 低延迟、高吞吐 | 实时监控、实时清洗 | 对实时性要求高 |
| Apache NiFi | 流程可视化、组件拖拽 | 易用性要求高、流程复杂 | 非技术背景团队、流程复杂 | 扩展性一般 |
| Apache Flink | 流式计算、状态管理 | 实时性要求高、状态复杂 | 实时业务、状态依赖 | 学习曲线陡峭 |
4) 【示例】
假设两个雷达传感器,数据格式分别为JSON和CSV,字段缺失。用Spark SQL处理:
-- 读取不同格式的数据
df_json = spark.read.json("sensor1_data.json")
df_csv = spark.read.csv("sensor2_data.csv", header=True, inferSchema=True)
-- 统一字段:补充缺失字段,处理冗余
from pyspark.sql.functions import col, when
df_json = df_json.withColumn("sensor_id", when(col("sensor_id").isNull(), "sensor1").otherwise(col("sensor_id")))
df_json = df_json.withColumn("timestamp", col("timestamp").cast("timestamp"))
df_csv = df_csv.withColumn("sensor_id", "sensor2")
df_csv = df_csv.withColumn("timestamp", col("timestamp").cast("timestamp"))
-- 合并数据
df = df_json.unionByName(df_csv, allowMissingColumns=True)
-- 校验规则:字段非空、数据类型正确
from pyspark.sql.functions import isnull
df = df.filter(~isnull("sensor_id") & ~isnull("timestamp") & col("range").cast("double").isNotNull())
-- 写入统一格式
df.write.format("parquet").save("cleaned_radar_data")
5) 【面试口播版答案】
面试官您好,针对多源异构雷达数据,我会设计分层数据治理流程。首先,数据治理策略:建立元数据表记录每个传感器的字段定义、数据类型、协议版本,定义数据质量规则(如字段非空、数据范围校验)。然后,技术手段:使用流处理工具(如Apache Flink)构建实时数据清洗管道,通过正则校验字段格式,使用数据类型转换(如将字符串转为数值),处理缺失值(用均值填充或标记)。比如,处理两个传感器数据时,将JSON和CSV数据转换为统一Parquet格式,校验后缺失率从15%降至2%,异常数据从8%降至1%,确保数据一致性。这样既保证了实时性,又通过规则引擎保证了数据质量。
6) 【追问清单】
7) 【常见坑/雷区】