hadoop - 从命令行在 Hadoop 中检测压缩编解码器

标签 hadoop

有什么简单的方法可以找出用于在 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'

Parquet

hadoop jar /path/to/parquet-tools.jar meta FILE_LOCATION_ON_HDFS

关于hadoop - 从命令行在 Hadoop 中检测压缩编解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934551/

相关文章:

language-agnostic - Map Reduce 框架/基础设施

apache-spark - 我们在yarn cluster中运行时在哪里可以看到spark输出控制台

java - 使用 Java 的 map

apache-spark - MapReduce 还是 Spark?

java - 如何在映射器中合并值?

hadoop - 在sqoop导入中添加列

hadoop - 为 hdfs 用户获取 Kerberos ticker 会引发错误

apache - 使用 Kubernetes 或 Apache mesos

hadoop - 如何通过创建与现有表具有相同结构的新配置单元表从配置单元表中删除重复项?

hadoop - Hadoop 2.7在windows 7 64位启动时 : Name or service not knownstname localhost