我想分析一个文本文件 文本文件的格式是这样的......
<msg time='2015-07-30T16:37:48.408+09:00' org_id='oracle' comp_id='rdbms'
msg_id='opiexe:3056:2780954927' client_id='' type='NOTIFICATION'
group='admin_ddl' level='16' host_id='TEST_DB1'
host_addr='127.0.0.1' module='sqlplus@TEST_DB1 (TNS V1-V3)' pid='24436'>
<txt>ORA-1543 signalled during: create tablespace TS_MODULE_I datafile '/data001/orasvc01/NEWDB/ts_module_i_01.dbf' size 20m...
</txt>
</msg>
<msg time='2015-07-30T16:39:13.173+09:00' org_id='oracle' comp_id='rdbms'
client_id='' type='UNKNOWN' level='16'
host_id='TEST_DB1' host_addr='127.0.0.1' module=''
pid='23242'>
<txt>Errors in
file /logs001/orasvc01/diag/rdbms/newdb/NEWDB/trace/NEWDB_smon_23242.trc:
ORA-01116: error in opening database file 6
ORA-01110: data file 6:
'/data001/orasvc01/NEWDB/ts_module_d_01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
</txt>
</msg>
...
有时它包括7行,但其他东西包含10行。 在这种情况下..
我想要一个输出 (列[0])(列[1])错误总和
2015-07-31 ora-1051 7
我该怎么办?
答案 0 :(得分:0)
您的输入文件是xml。如果你在每一行中都有一个完整的xml作为字符串,你就会使用直接向前的map reduce。但是您的输入格式不同。主要依赖于开始和结束标记来获取记录。
所以你应该使用记录阅读器,并为map reduce-XmlInputFormat创建自己的格式。好消息是,它已经创建,你必须自定义它。您可以搜索&#34; xmlinputformat mahout&#34;,用于实际课程。然而,更简单的方法是查看使用上述格式的示例。你可以找到它here。一旦你的映射器重新编写了一个记录,并且你掌握了里面的内容,剩下的就是向前,这取决于你将哪些细节发送到输出。快乐的编码