我尝试读取一些文件的内容,并使用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日-北京市公安局海淀分局备案无此文件或目录
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之类的工具来高效地转换数据。
> /energydata/2015/01/01.txt
hdfs fs -cat
grep
/energydata/2015/01/
mkdir -p /energydata/2015/01/
cat
qltillow2#
以下CLI命令起作用
hadoop fs -cat /FinalDataset/c*.txt | grep 2015-01-* | hadoop fs -put - /energydata/2015/01/output.txt
2条答案
按热度按时间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之类的工具来高效地转换数据。qltillow2#
以下CLI命令起作用