DARPA TC-e3/e5数据集bin转json

2024-01-30 19:40
文章标签 数据 json bin tc e3 e5 darpa

本文主要是介绍DARPA TC-e3/e5数据集bin转json,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关于这个数据集的一些基本信息就不赘述了,参考我之前的博客。DARPA TC-engagement5数据集官方工具可视化
两个方法:修改ELK可视化工具或直接使用自带的工具前者相对灵活,因为losgstash可以通过配置过滤器来修改字段;可以通过output选项设置文件名参数直接对日志进行分类,比如按事件类型写到相应的文件。但是目前有点小问题,每次json文件超过4.3G就会自动断掉,猜测应该是linux的文件大小有限制。这一点也可以在另一个自带的consumer工具中体现出来。后者更稳定,但是如果需要进一步研究其参数。

1. 修改可视化工具

官方给的工具是将解析的数据存到elasticsearch的,但是数据集的解压增长率非常恐怖,对空间要求很高。因此针对这个问题,我对工具主要进行了两个修改:

  • 利用logstash的插件直接将json输出到本地文件,删掉了grafana
  • 参考engagement3的数据格式重写logstash过滤器,对字段进行了删减和修改,剔除不必要字段。

修改之后的工具包放到了我的github-TC_Tool_modified,开源不易,记得star一下,感激不尽!

1.1 文件树介绍

在这里插入图片描述

文件内容
theia存放原始数据的文件夹
elasticsearch数据库,已经不需要了,但是logstash以来这个数据库,所以还是保留了
logs存放json文件的地方
logstash日志收集器,负责收集解压出来的log4j日志,然后输出到本地文件
docker-compose.yml镜像的配置文件
TCCDMDatum.avsc一个模式文件,用于规范化数据格式,负责从log到json的转换
tc-das-importer-1.0-SNAPSHOT-jar-with-dependencies.jar官方的java包,用于解压、读取并参考上述数据规范生成标准格式的数据通过socket发送

1.2 可修改配置

1.2.1 elastic search的内存限制(非必要)

docker-compose.yml中存在对于elasticsearch的内存限额,如果1G对于你的机器存在负担,可以尝试改为512、256等。
在这里插入图片描述

1.2.2 初始日志输出地址

我们可以通过命令java -Dlog4j.debug=true -cp .:tc-das-importer-1.0-SNAPSHOT-jar-with-dependencies.jar main.java.com.bbn.tc.DASImporter [原属数据路径] [模式文件路径] [输出IP] [输出端口] -v启动对于原始日志的解压和解析,启动前确保已有JAVA环境且logstash已成功启动。如果你采用C/S模式,这里的IP和端口可以修改为需要的地址。

1.2.3 初始日志接收地址

logstash负责接收Java包发送来的日志进行处理和输出到本地文件,可修改的的东西主要为4个:

  • docker-compose.yml中挂载的本地路径。
    在这里插入图片描述

  • logstash/pipline/logstash.conf中的监听端口。如果有修改发送地址,此处也应该修改为对应的端口
    在这里插入图片描述

  • logstash/pipline/logstash.conf中的过滤器。如果有额外需求,可以通过修改过滤器对字段进行调整

filter {json {source => "message"}mutate {//移除不必要字段remove_field=>["message","timestamp","file","@version","path","thread","host","method","priority","logger_name","class"]}//转换时间格式mutate {convert => {"[datum][com.bbn.tc.schema.avro.cdm20.Event][timestampNanos]" => "string"}}mutate {gsub => ["[datum][com.bbn.tc.schema.avro.cdm20.Event][timestampNanos]", "\d{6}$", ""]}date {match => ["[datum][com.bbn.tc.schema.avro.cdm20.Event][timestampNanos]", "UNIX_MS"]timezone => "America/New_York"locale => "en"  target => "@timestamp"}
}
  • logstash/pipline/logstash.conf中的输出文件的命名规则。为了避免单个文件过大,这里采用以小时为单位的时间格式命名。注释掉的输出方式为控制台输出,可以打开用以观察是否正常接收到数据,正式转换时再注释掉。
    在这里插入图片描述

1.3 启动方式

TC_Tool_modified/目录下使用docker-compose up -d启动日志接收器。需要docker环境和docker-compose包。
在任何目录下使用1.2.2中的命令格式启动日志解析器。如:

java -Dlog4j.debug=true -cp .:tc-das-importer-1.0-SNAPSHOT-jar-with-dependencies.jar main.java.com.bbn.tc.DASImporter ./theia/ ./TCCDMDatum.avsc 127.0.0.1 4712 -v

2. java-consumer

下载工具包ta3-java-consumer.tar.gz并解压。
参考根目录下的README进行安装。
ta3-java-consumer\tc-bbn-kafka目录下新建一个python脚本,如bin2json.py,粘贴如下代码进去,修改其中的bin_path.bin文件的绝对地址,注意一定要是绝对地址,然后运行该脚本等待转换完成即可。

import os
import time
# the path of .bin files
bin_path="/media/njust3001/disk/TC_e5/theia/"
dir_list=os.listdir(bin_path)
# print(len(dir_list))for cur_file in dir_list:# gets the absolute pathpath=os.path.join(bin_path,cur_file)# print(path)command="./json_consumer.sh "+pathos.system(command)time.sleep(10)print("susseful convert "+curfile)

本质上是能够通过./json_consumer.sh [filepath]直接运行的,但是后面的参数不能是文件夹只能是具体文件,所以额外写了脚本。转换出来的json文件默认在ta3-java-consumer\tc-bbn-kafka目录下,该工具包是支持自定义路径的,有需要可以自行研究。

这篇关于DARPA TC-e3/e5数据集bin转json的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/661333

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=