标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。