hadoop - 在hadoop中这种情况下如何减少?

标签 hadoop mapreduce

我想分析一个文本文件
文本文件的格式如下:

<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 &apos;/data001/orasvc01/NEWDB/ts_module_i_01.dbf&apos; 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:
&apos;/data001/orasvc01/NEWDB/ts_module_d_01.dbf&apos;
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
</txt>
</msg>

....

有时它包含7行,而其他事物则包含10行。
在这个情况下..

我想要像这样的输出
(column [0])(column [1])错误总和

2015-07-31 ora-1051 7

我该怎么办?

最佳答案

您的输入文件是xml。如果每行中都有整个xml作为字符串,则将使用直接映射减少。但是,您的输入格式不同。通常依赖于开始和结束标签来获取记录。

因此,您应该使用记录读取器,并为map reduce XmlInputFormat创建自己的格式。好消息是,它已经创建,您必须对其进行自定义。您可以搜索“xmlinputformat mahout”作为实际的类。但是,更简单的方法是查看使用上述格式的示例。您可以找到它here。一旦您的映射器重新记录了一条记录,并且您掌握了其中的内容,剩下的就直截了当,这取决于您要发送哪些细节以输出。快乐编码

关于hadoop - 在hadoop中这种情况下如何减少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31777789/

相关文章:

hadoop - 如何在代码中找到 hadoop 作业的作业 ID?

hadoop - 作业无法从一个 ORC 文件读取并将一个子集写入另一个文件

hadoop - 为 hadoop 设计 "mapper"和 "reducer"函数的功能?

hadoop - 在 Hive 中获取 sysdate -1

hadoop - ORC如何分隔字段?

hadoop - 从袋子里取出一个元组

当reduce函数不使用emit中的变量时,MongoDB MapReduce出现奇怪的值

hadoop - AWS 实例 distcp 到 s3 - 访问 key

fetcher#1 随机播放中的 Hadoop 错误

java - hadoop中的分区文件是如何创建的