主要通过一个数据序列化与反序列化的案例来介绍Streamsets(3.20.0 汉化版)的使用,因为大数据加工与处理的时候,避免不了数据的序列化与反序列化,这里主要讲一下使用数据序列化插件和反序列化插件实现avro格式数据序列化与反序列化,。当然还是可以序列化其他格式,这里挑一个难的讲一下。
学习目的:学习使用Data Generator 和 Data Parser。
最终数据流的效果图:
需要配置一个数据流。
序列化效果:

反序列化效果:

前期准备:
1.一些JSON格式的数据:
{
"cont":{
"disk_total":1024,
"disk_used":100,
"disk_free":924,
"file_sum":94,
"file_type_sum":20,
"file_grow_num":20,
"disk_grow_num":20,
"file_type_sum_document_docx":200,
"file_type_sum_document_txt":200,
"disk_used_document_docx":200,
"disk_used_document_txt":600
},
"status_tag":{
"tag_version":"1.0",
"data_type":4,
"data_subtype":16387,
"producer_id":24705,
"timestamp":"2020-03-24 12:00:00.00"
}
}
Avro schema:
{
"type": "record",
"name": "cont1",
"fields": [{
"name": "cont",
"type": {
"type": "record",
"name": "cont2",
"fields": [{
"name": "disk_total",
"type": "int"
},
{
"name": "disk_used",
"type": "int"
},
{
"name": "disk_free",
"type": "int"
},
{
"name": "file_sum",
"type": "int"
},
{
"name": "file_type_sum",
"type": "int"
},
{
"name": "file_grow_num",
"type": "int"
},
{
"name": "disk_grow_num",
"type": "int"
},
{
"name": "file_type_sum_document_docx",
"type": "int"
},
{
"name": "file_type_sum_document_txt",
"type": "int"
},
{
"name": "disk_used_document_docx",
"type": "int"
},
{
"name": "disk_used_document_txt",
"type": "int"
}
]
}
}]
}
构建步骤:
1.使用开发测试origin类组件准备一些json格式的数据

2.数据序列成avro格式
使用数据序列化插件将json格式的数据序列化成avro格式并通过byte数组输出,下面配置一下数据输出的字段cont2和类型Byte array。

配置一下数据格式为avro,并需要配置一下avro的schema(不知道avro格式的可以学习一下)

3.将序列的数据反序列
使用数据反序列化插件将avro格式的数据反序列化成json格式,下面配置一下要反序列化的数据字段cont2和数据输出的字段cont2(将反序列化的结果还存到cont2中)。

同样将序列化中用到的avro schema填入。

Streamsets实战之路正在更新中,尽情期待!!!
此文章为博主原创,转载请标明出处和原始链接,谢谢。 |