有什么简单的方法可以找到hadoop中用来压缩文件的编解码器吗?我是否需要编写一个java程序,或者将文件添加到hive以便使用它 describe formatted table ?
describe formatted table
ds97pgxw1#
如果您询问mapreduce使用什么编解码器进行中间Map输出和/或最终输出,您可以查看hadoop的配置文件,通常位于 <HADOOP_HOME>/etc/mapred-site.xml . 但是,我不知道如何直接从命令行进行检查。中间Map输出压缩的设置应如下所示:
<HADOOP_HOME>/etc/mapred-site.xml
<property> <name>mapreduce.map.output.compress</name> <value>true</value> </property> <property> <name>mapreduce.map.output.compress.codec</name> <value>org.apache.hadoop.io.compress.GzipCodec</value> </property>
作业输出压缩的设置应如下所示:
<property> <name>mapreduce.output.fileoutputformat.compress</name> <value>true</value> </property> <property> <name>mapreduce.output.fileoutputformat.compress.type</name> <value>BLOCK</value> </property> <property> <name>mapreduce.output.fileoutputformat.compress.codec</name> <value>org.apache.hadoop.io.compress.GzipCodec</value> </property>
从这两个代码片段中,您可以看到我正在使用gzip编解码器,并且我正在压缩中间Map输出和最终输出。希望有帮助!
qij5mzcb2#
一种方法是在本地下载一个文件(使用 hdfs dfs -get 命令),然后执行检测本地文件压缩格式的过程。对于在hadoop之外压缩的文件来说,这应该非常有效。对于hadoop中生成的文件,这只适用于有限数量的情况,例如用gzip压缩的文本文件。hadoop中压缩的文件可能是所谓的“容器格式”,例如avro、sequence文件、parquet等,这意味着压缩的不是整个文件,而是文件中的数据块。Hive的 describe formatted table 您提到的命令确实可以帮助您确定底层文件的输入格式。一旦您知道了文件格式,您就应该参考文件格式的文档/源代码,以获取有关编解码器检测的参考。一些文件格式甚至随命令行工具一起提供,以查看文件的元数据,从而显示压缩编解码器。一些例子:avro公司:
hdfs dfs -get
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
2条答案
按热度按时间ds97pgxw1#
如果您询问mapreduce使用什么编解码器进行中间Map输出和/或最终输出,您可以查看hadoop的配置文件,通常位于
<HADOOP_HOME>/etc/mapred-site.xml
. 但是,我不知道如何直接从命令行进行检查。中间Map输出压缩的设置应如下所示:
作业输出压缩的设置应如下所示:
从这两个代码片段中,您可以看到我正在使用gzip编解码器,并且我正在压缩中间Map输出和最终输出。希望有帮助!
qij5mzcb2#
一种方法是在本地下载一个文件(使用
hdfs dfs -get
命令),然后执行检测本地文件压缩格式的过程。对于在hadoop之外压缩的文件来说,这应该非常有效。对于hadoop中生成的文件,这只适用于有限数量的情况,例如用gzip压缩的文本文件。
hadoop中压缩的文件可能是所谓的“容器格式”,例如avro、sequence文件、parquet等,这意味着压缩的不是整个文件,而是文件中的数据块。Hive的
describe formatted table
您提到的命令确实可以帮助您确定底层文件的输入格式。一旦您知道了文件格式,您就应该参考文件格式的文档/源代码,以获取有关编解码器检测的参考。一些文件格式甚至随命令行工具一起提供,以查看文件的元数据,从而显示压缩编解码器。一些例子:
avro公司:
parquet