我正在寻找一种归档zgrep
hdfs
方式
就像是:
hadoop fs -zcat hdfs://myfile.gz | grep "hi"
或者
hadoop fs -cat hdfs://myfile.gz | zgrep "hi"
它对我来说真的不起作用,无论如何用命令行来实现它?
我正在寻找一种归档zgrep
hdfs
方式
就像是:
hadoop fs -zcat hdfs://myfile.gz | grep "hi"
或者
hadoop fs -cat hdfs://myfile.gz | zgrep "hi"
它对我来说真的不起作用,无论如何用命令行来实现它?
此命令行将自动为任何简单的文本文件找到正确的解压缩器,并将未压缩的数据打印到标准输出:
我已经将它用于 .snappy 和 .gz 文件。它可能适用于 .lzo 和 .bz2 文件。
这是一个重要的特性,因为 Hadoop 对 Snappy 文件使用自定义文件格式。这是解压缩 Hadoop 创建的 Snappy 文件的唯一直接方法。没有像其他压缩器那样的命令行“unsnappy”命令。我也不知道有任何直接命令可以创建一个。我只将它们创建为 Hive 表数据。
注意:
hadoop fs -text
是单线程的,在你运行命令的机器上运行解压。zless/zcat/zgrep只是外壳包装器,它们使gzip将解压缩的数据输出到标准输出。要做你想做的事,你只需要写一个围绕hadoop fs命令的包装器。
旁白:这可能对您不起作用的原因是您的 hdfs URI 中缺少一个额外的斜杠。
你写了:
这会尝试联系名为myfile.gz的主机或集群。您真正想要的是hdfs:///myfile.gz或(假设您的配置文件设置正确),只是myfile.gz,hadoop 命令应该在其前面加上fs.defaultFS定义的正确集群/名称节点路径。
以下对我有用。
我通常使用 hdfs fuse mounts.. 所以几乎可以使用任何常规的 Unix 命令(一些命令可能无法工作,因为 hdfs 不是 POSIX 兼容的文件系统)。
gunzip/zcat
在 hdfs 保险丝座上工作得很好。而且打字速度也更快:),如果你想编写脚本,更容易阅读。
将 hadoop 挂载为“常规”文件系统:http: //www.cloudera.com/content/cloudera/en/documentation/cdh4/latest/CDH4-Installation-Guide/cdh4ig_topic_28.html