需求,安全检查,例如Linux系统,用户安全检查,配置项检查等,这些检查的规则在Drools里面去实现,数据传送过来即可,

问题:如何定义数据结构,不同的检查项会有不同的数据结构,如何规范呢?

思路:

使用map嵌套的思路,检查的数据输出过来是json的格式发送到kafka,然后spark streaming程序直接读取json,然后转为map进行处理。

遇到的问题,一开始代码是使用scala.util.parsing.json.JSON.parseFull(string),这样返回的可能是map[String,Any]

但在drools的rule文件中直接的语言是java,所以需要引入scala.collection.javaconversion._来隐式转换。

但这里的问题是,转换只会完成一层,但json会嵌套,会返回嵌套的map,这样这种方法就不好用了。

折腾了半天,暂时是两层,只是强制转换完成了,这里提一下,java中的object对应scala里面的AnyRef.

        val jsonstr = scala.io.Source.fromFile(new File("""C:\git\ccms-analyzer\target\classes\test\jsondemo.txt""")).mkString("")
//use gson to parse json to map
val gson = new Gson()
var map : java.util.Map[String,Object] = new HashMap[String,Object]()
map = gson.fromJson(jsonstr, map.getClass)
 

val lines = rdd.mapPartitions{jsonStrs =>
            val gson = new Gson()
            jsonStrs.map(x=>{
               gson.fromJson(x._2, Class.forName("java.util.Map"))     
            })
      }

这个场景还是使用java的库来解析json方便,非常方便的完成了解析,满足了我的要求。

经测试,在drools的rule文件中是可以使用scala的,例如import scala.Predef.Println,就可以在后面使用,这许是他们都是基于JVM的,没有深究。

最新文章

  1. 全球HTTPS时代已来,你跟上了吗?
  2. http://jingyan.baidu.com/article/2009576193ee38cb0721b416.html
  3. http session 基础知识
  4. GO语言练习ONE
  5. caret彻底的理解css的三角形【通过border】
  6. 实现DataGridView行的拖动,即实现行的顺序交换
  7. echarts柱状图修改背景线为网格线、去掉刻度标签、鼠标悬停在柱条上时变色、柱条圆角弧度、
  8. Android必知必会-App 常用图标尺寸规范汇总
  9. Luogu5221 Product
  10. Linux或UNIX系统配置检查
  11. Cannot uninstall 'html5lib'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
  12. Android:android studio快捷键大全
  13. 5.使用std的迭代器访问并修改图像
  14. PreparedStatement与Statement区别
  15. Unity角色对话
  16. [翻译] ALMoviePlayerController
  17. 6/7 sprint2 看板和燃尽图的更新
  18. 【OpenCV】SIFT原理与源码分析:方向赋值
  19. NOIP模拟·20141105题解
  20. [Java基础] Java如何实现条件编译

热门文章

  1. P2483 [SDOI2010]魔法猪学院
  2. 打印系统所有的PID
  3. 自定义View中的Path
  4. rimraf删除gulp的模块插件
  5. Django学习笔记第五篇--实战练习一--查询数据库并操作cookie
  6. 解决存储过程中拼接的SQL字符串超长导致sql语句被截取的问题
  7. 运用JS设置cookie、读取cookie、删除cookiev
  8. PHP之冒号、endif、endwhile、endfor 是什么鬼?f
  9. 常见到的runtime exception
  10. requests和bs4