现在组里接的项目主要是在Azure Databricks里面用PySpark写脚本处理数据。而它目前的代码单元测试这一块是完全崩了,其中有几个已经写了的测试例子也无法运行,原因是它会加载avro的schema文件作为目标schema的转化和验证。但是因为处理逻辑的变更已经增加了一些列,可以avro文件并没有一直更新,使得测试无法成功。可是直接编辑avro文件尝试了很多软件或者在线编辑都无法成功,于是就思考替换这里的schema的加载方式。
下面根据网络查阅及整理,找到的几种加载schema的方式如下:
1. 直接声明的方式
self.src_schema = StructType([
StructField("value", StringType()),
StructField("publisher_id", IntegerType()),
StructField("event_datetime", StringType()),
StructField("process_datetime", StringType()),
StructField("dt", StringType())])
mock_module.SchemaRegistry().pull_schema_from_schema_registry.return_value = self.src_schema
from pyspark.sql.functions import *
from pyspark.sql.types import *
aug_schema = StructType([
StructF