将 grep 结果输出到不同目录中的新文件时出现 Hadoop 错误
Hadoop error when outputting the grep results to a new file in a different directory
我正在尝试读取一些文件的内容并使用 grep 查找包含我的搜索查询的行,然后将结果输出到另一个目录中的文件夹中。我收到错误消息“不存在这样的文件或目录”。我已经创建了文件夹结构和文本文件。
hadoop fs -cat /Final_Dataset/c*.txt | grep 2015-01-* > /energydata/2015/01/01.txt
错误:
-bash: /energydata/2015/01/01.txt: 没有那个文件或目录
> /energydata/2015/01/01.txt
表示输出被重定向到 local 文件。 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
我正在尝试读取一些文件的内容并使用 grep 查找包含我的搜索查询的行,然后将结果输出到另一个目录中的文件夹中。我收到错误消息“不存在这样的文件或目录”。我已经创建了文件夹结构和文本文件。
hadoop fs -cat /Final_Dataset/c*.txt | grep 2015-01-* > /energydata/2015/01/01.txt
错误:
-bash: /energydata/2015/01/01.txt: 没有那个文件或目录
> /energydata/2015/01/01.txt
表示输出被重定向到 local 文件。 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