我有用gzip压缩的日志文件。
目前我用pig加载.gz文件,用REGEXP解析日志并将结果存储到HBase表中。该表有选项COMPRESSION => ' GZ&#39 ;.
但我想知道这是不是最好的方式。显然.gz文件较小,但是猪如何读取单独的行?是拉开拉链吗?在加载之前解压缩它会不会更有效?
任何人都可以给我任何提示吗?
此致 的Pawel
答案 0 :(得分:2)
Pig基本上由一个编译器组成,它为你的猪程序生成mapreduce作业序列。
pig如何理解gzip文件: - 你的mapreduce作业,由pig脚本启动,查看文件扩展名以查看它用于压缩的压缩编解码器的类型并调用相关的解压缩程序。
Hadoop首先检查所有已安装的编解码器,如果找不到文件所需的编解码器,则会报告错误。
所以,yes it unzips it and then RecordReader reads the unzipped file as one record per line by default
。
这就是一些mapreduce工作中堆大小错误的原因,因为mapred的孩子无法获得足够的空间来保存未压缩的数据。
{{1} }。此外,hbase中只支持3种类型的压缩 - gzip,lzo和snappy,所有这些都具有不应更改的唯一ID。