在hadoop中 hdfs dfs -text
以及 hdfs dfs -getmerge
命令允许人们从命令行轻松地读取hdfs中压缩文件的内容,包括管道到其他处理命令(例如。 wc -l <(hdfs dfs -getmerge /whatever 2>/dev/null)
).
这些命令之间是否存在相互作用,允许从命令行将内容推送到hdfs,同时支持与上述命令相同的压缩和格式特性? hdfs dfs -put
看起来只是将本地文件的原始副本复制到hdfs,没有压缩或容器格式更改。
建议使用命令行工具来操作这些格式和压缩算法的答案也很受欢迎。我通常在compressedstream中看到snappy压缩数据,但不知道如何从命令行将一个纯文本文件(每行一个基准)转换成这样的文件。我尝试了snzip(正如在askubuntu问题中所建议的)以及这个snapy命令行工具,但是不能使用它们中的任何一个来生成hadoop友好的snapy文件(或者使用apacheflume读取hdfs中摄取的snapy文件的内容)。
2条答案
按热度按时间1cklez4t1#
似乎没有相互作用
hdfs dfs -text
而且webhdfs也不支持(de)压缩,所以我最终用java编写了自己的命令行工具,用hadoop友好的snappy将标准输入压缩为标准输出。代码如下:
使用运行
hadoop jar <jar path> <class name>
.这样压缩的文本数据可以
put
至hdfs(例如。hdfs dfs -put
或者使用webhdfs)然后用hdfs dfs -text
.pbossiut2#
您可以使用hdfs-nfs,将其装载为驱动器,并且应该能够运行linux命令进行交互。
https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-hdfs/hdfsnfsgateway.html