我是新来的Pig和hdfs。这就是我要做的。
我有很多扁平文本lzo压缩格式不正确的服务器日志文件-大约2 gb的每一个从大约400个服务器每天生成。
我正试图利用map reduce,使用java格式化程序格式化和清理hdfs中的数据,然后将输出加载到hive中。
我的问题是,我的Pig脚本只产生一个Map器,大约需要15分钟。按顺序读取文件。这是不实际的数据量,我必须每天加载在Hive。
这是我的Pig剧本。
SET default_parallel 100;
SET output.compression.enabled true;
SET output.compression.codec com.hadoop.compression.lzo.LzopCodec
SET mapred.min.split.size 256000;
SET mapred.max.split.size 256000;
SET pig.noSplitCombination true;
SET mapred.max.jobs.per.node 1;
register file:/apps/pig/pacudf.jar
raw1 = LOAD '/data/serverx/20120710/serverx_20120710.lzo' USING PigStorage() as (field1);
pac = foreach raw1 generate pacudf.filegenerator(field1);
store pac into '/data/bazooka/';
看起来mapred.min.split.size设置不起作用。我可以看到只有1个Map器正在启动,它可以在集群的单个服务器上处理整个2GB文件。由于我们有一个100节点的集群,我想知道如果我能产生更多的Map器,我是否可以并行使用更多的服务器。
提前谢谢
1条答案
按热度按时间35g0bw711#
pigstorage中的压缩支持不提供拆分能力。对于pig的可拆分lzo压缩支持,您需要来自twitter的象鸟库。另外,要对现有的常规lzo文件进行拆分(正确地?),您需要在加载到pig脚本之前对它们进行索引。