将grep结果输出到另一个目录下的新文件时出现Hadoop错误



我试图读取几个文件的内容,并使用grep找到我的搜索查询行,然后将结果输出到另一个目录中的文件夹中。我得到一个错误"没有这样的文件或目录存在"。我已经创建了文件夹结构和文本文件。

hadoop fs -cat /Final_Dataset/c*.txt | grep 2015-01-* > /energydata/2015/01/01.txt

错误:

-bash:/energydata/2015/01/01.txt: No such file or directory

> /energydata/2015/01/01.txt表示输出被重定向到本地文件。hdfs fs -cat将输出发送到您的本地机器,此时您不再在Hadoop中操作。grep只是对数据流起作用,它不关心(或知道)它来自哪里。

在执行该命令之前,需要确保本地存在/energydata/2015/01/。您可以使用mkdir -p /energydata/2015/01/创建它。

如果你想从HDFS上的文件中提取某些记录,然后将新文件重写到HDFS,那么我建议不要将文件cat-ing,而是通过使用Spark或Hive之类的东西来有效地转换数据,从而将处理完全放在集群上。如果做不到,就做一个hadoop dfs -put <local_path> /energydata/2015/01/01.txt

下面的CLI命令有效

hadoop fs -cat /FinalDataset/c*.txt | grep 2015-01-* | hadoop fs -put - /energydata/2015/01/output.txt

相关内容

  • 没有找到相关文章

最新更新