HDFS上存了大量归档压缩的日志文件,偶尔需要到上面查询一些信息。
hadoop fs虽然可以执行ls,cat等操作,但是却不能直接执行grep操作。写个map reduce程序再执行,虽然可行,却感觉有点麻烦,没有直接使用shell命令方便灵活。经过查询和尝试,终于找到了方法。
举个例子,启用10个进程,查询在2016年1月11日19点和20点之间的所有包含abcdefg的日志记录:
hadoop fs -ls /path-to-log-dir/ | \
grep '2016011119' | awk '{print $8}' | \
xargs -n 1 -I {} -P