有什么简单的方法可以找出用于在 Hadoop 中压缩文件的编解码器吗?
我是否需要编写 Java 程序,或将文件添加到 Hive 以便我可以使用 describe formatted table
?
最佳答案
一种方法是在本地下载文件(使用hdfs dfs -get
命令),然后按照the procedure 进行操作。用于检测本地文件的压缩格式。
这对于在 Hadoop 的外部压缩的文件应该非常有效。对于在 Hadoop 中生成的文件,这仅适用于有限数量的情况,例如使用 Gzip 压缩的文本文件。
在 Hadoop 中压缩的文件很可能是所谓的“容器格式”,例如Avro , Sequence Files, Parquet 等。这意味着不是压缩整个文件,而是压缩文件中的数据 block 。您提到的配置单元的 describe formatted table
命令确实可以帮助您弄清楚底层文件的输入格式。
了解文件格式后,您应该引用文件格式的文档/源代码以供编解码器检测引用。一些文件格式甚至带有命令行工具来查看文件的元数据,从而揭示压缩编解码器。一些例子:
Avro :
hadoop jar /path/to/avro-tools.jar getmeta FILE_LOCATION_ON_HDFS --key 'avro.codec'
hadoop jar /path/to/parquet-tools.jar meta FILE_LOCATION_ON_HDFS
关于hadoop - 从命令行在 Hadoop 中检测压缩编解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934551/