我在hadoop中有一个需求,需要将一组日志文件加载到配置单元表中并对其进行查询。
示例日志文件如下所示,
# Comment
# Comment
01 record1 record2 record3 record4
02 record1 record2 record3 record4
03 record1 record2 record3 record4
# Comment
# comment
我想删除每行中以#开头的#注解行。
我要加载的实际内容是以空格分隔和结构化的。
关于如何通过删除注解行来加载数据,有什么解决方案/建议吗?
请帮帮我!
2条答案
按热度按时间ca1c2owp1#
可以在创建配置单元表时指定serde。一个内置的regexserde将服务于您的目的。
如果需要更多定制的数据加载,可以编写定制的serde。
裁判:http://shout.setfive.com/2013/12/10/hive-how-to-write-a-custom-serde-class/
ljsrvy3e2#
可以使用unix命令清理文件:
如果字段不包含
#
,使用grep-v“#”filename.log>stripped.log,否则使用sed命令sed“/^#/d”filename.log>stripped.log查看,这将删除以开头的所有行#对于清理大文件,不重新启动unix命令。您应该使用mapreduce程序清理数据。
您可以对每一行执行清理操作,然后将其插入配置单元表中进行查询。pfa是一个map-reduce程序,用于清除数据文件中的注解。
hadoop jar cleandata.jar hdfs数据位置hdfs配置单元表文件夹名称节点主机name:portno
清除数据的样例map reduce程序