ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

morphlines中使用java

2021-11-11 10:02:53  阅读:174  来源: 互联网

标签:inputs java iterator morphing record objects morphlines 使用 new


1.pom.xml加入依赖:

  <!-- https://mvnrepository.com/artifact/org.kitesdk/kite-morphlines-json -->
        <dependency>
            <groupId>org.kitesdk</groupId>
            <artifactId>kite-morphlines-json</artifactId>
            <version>1.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.kitesdk</groupId>
            <artifactId>kite-morphlines-core</artifactId>
            <version>1.1.0</version>
        </dependency>

2.test方法

    public static void main(String[] args) {
        try {

            MorphlineContext morphlineContext =new MorphlineContext.Builder().build();
            Command morphing =  new Compiler().compile(new File("D:\\workspace\\morphlinesTest\\src\\main\\resources\\jsonParser.conf"), null, morphlineContext, null);;
            String[] inputs =  new String[]{"D:\\workspace\\morphlinesTest\\src\\main\\resources\\data\\tweets.json"};
            boolean[] outcome = new boolean[inputs.length];
            // Process each input data file
            Notifications.notifyBeginTransaction(morphing);
            Record record = new Record();
            for (int i = 0; i < inputs.length; i++) {
                InputStream in = new BufferedInputStream(new FileInputStream(new File(inputs[i])));
                record.put(Fields.ATTACHMENT_BODY, in);
                Notifications.notifyStartSession(morphing);
                outcome[i] = morphing.process(record);
                if (outcome[i] == false) {
                    System.out.println("Morphline failed to process record: " + record + "for file " + inputs[i]);
                }
                in.close();
            }
            Notifications.notifyShutdown(morphing);
            System.out.println("===========>"+outcome[0]);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

3.conf

morphlines : [{
	id : json2string
	importCommands : ["org.kitesdk.**"]
	commands : [
			# read the JSON blob
			{ readJson: {} }
			# extract JSON objects into head fields
			{ extractJsonPaths {
			  flatten: true
			  paths: {
	            confidences : "/objects[]/confidence"
                ids: "/objects[]/id"
                types : "/objects[]/observables[]/type"
                values : "/objects[]/observables[]/value"
			  }
			} }
			# java
			{
			java {
            code: """
                   ListMultimap<String, Object> fields = record.getFields();
                   Map<String, Collection<Object>> stringCollectionMap = fields.asMap();
                   System.out.println("==record==>"+stringCollectionMap);
                   Collection<Object> types = stringCollectionMap.get("values");
                   Iterator<Object> iterator = types.iterator();
                   while (iterator.hasNext()){
                       System.out.println("==单个value==>"+iterator.next());
                   }
                  return true;
                """
            }
            }
	]
}]

4.json

{
  "count": 2,
  "objects": [{
    "confidence": 55,
    "observables": [{
      "type": "domian",
      "value": "www.baidu.com"
    }],
    "id": "dddddd"   
  }, {
    "confidence": 77,
    "observables": [{
      "type": "domian",
      "value": "www.taobao.com"
    }],
    "id": "aaaaaaaaaaaa"
  }]
}

5.result:

 

标签:inputs,java,iterator,morphing,record,objects,morphlines,使用,new
来源: https://blog.csdn.net/u012440725/article/details/121261791

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有