HDFS 将grep结果输出到不同目录中的新文件时出现Hadoop错误

s4chpxco  于 2022-12-09  发布在  HDFS
关注(0)|答案(2)|浏览(178)

我尝试读取一些文件的内容,并使用grep查找包含搜索查询的行,然后将结果输出到另一个目录的文件夹中。我收到错误消息“No such file or directory exists”。我已经创建了文件夹结构和文本文件。

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

错误:
2015年01月01日-北京市公安局海淀分局备案无此文件或目录

bksxznpy

bksxznpy1#

> /energydata/2015/01/01.txt意味着输出将被重定向到本地文件。hdfs fs -cat将输出发送到您的本地计算机,此时您不再在Hadoop中操作。grep只处理数据流,它不关心(或知道)数据来自何处。
运行此命令之前,需要确保本地存在/energydata/2015/01/。可以使用mkdir -p /energydata/2015/01/创建它。
如果您希望从HDFS上的文件中提取某些记录,然后将新文件重新写入HDFS,那么我建议您不要使用cat-ing文件,而是将处理完全保留在集群上,使用Spark或Hive之类的工具来高效地转换数据。

qltillow

qltillow2#

以下CLI命令起作用

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

相关问题