如何解释hadoop grep命令输出

bis0qfac  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(627)

这是关于在hdfs目录中运行grep实用程序生成的输出文件的一个非常基本的问题。基本上,我已经在一个简单的shell脚本中包含了grep命令,这个脚本应该在这个目录中搜索给定的字符串,这个字符串是脚本的一个参数。剧本内容如下:


# !/bin/bash

set - e
cd $HADOOP_HOME
bin/hadoop org.apache.hadoop.examples.Grep 
"hdfs://localhost:9000/user/hduser" "hdfs://localhost:9000/user/hduser/out" $1
bin/hadoop fs -get "hdfs://localhost:9000/user/hduser/out/*" "/opt/data/out/"
bin/hadoop fs -rm -r "hdfs://localhost:9000/user/hduser/out"

发送到hdfs out目录的结果被复制到最后一行的本地目录。我故意在这个hdfs目录中放置了两个文件,其中只有一个包含我正在搜索的字符串的多个示例。在my/opt/data/out目录中结束的是以下两个文件。

_SUCCESS 
part-r-00000

这些作业看起来运行得很成功,但是我在两个文件之间看到的唯一内容是“part-r-0000”文件,具体如下。

29472   e

我想我是天真地希望看到字符串所在的文件名,也许还有它出现的次数。
我的问题是,这些值通常是如何从hadoop grep命令返回的,在哪里返回的?我在控制台中查看了map reduce jobs的运行位置,没有引用存储搜索字符串的文件名。任何关于我如何访问这些信息的指针将不胜感激,因为我不知道如何解释“29472e”。

szqfcxe2

szqfcxe21#

我明白就像。。。在hdfs中有一些作业的输出,可以复制到本地。然后尝试获取文件中字符串的计数。
在这种情况下,请在下面一行之后添加代码

bin/hadoop fs -get "hdfs://localhost:9000/user/hduser/out/*" "/opt/data/out/"

grep -c $1 /opt/data/out/*

此命令将执行预期的操作。它将给出文件名以及在文件中找到的字符串的计数。

相关问题