如何避免Hadoop PIG和Hive中的错误记录?

时间:2015-05-13 11:14:18

标签: hadoop hive apache-pig

您好我是Hadoop的新手我发现使用SkipBadRecord类可以在Java map reduce中跳过任何输入格式的badrecords,所以我只想知道Pig和Hive中的可能性如何?

3 个答案:

答案 0 :(得分:6)

Hive中的错误记录处理

要过滤配置单元中的错误记录,可以在查询中启用跳过模式。跳过模式的Hive配置为:

SET mapred.skip.mode.enabled = true;

您需要在hive查询之前设置上述命令。 您还可以通过提供以下参数来限制配置:

SET mapred.map.max.attempts = 100; 
SET mapred.reduce.max.attempts = 100;
SET mapred.skip.map.max.skip.records = 30000;
SET mapred.skip.attempts.to.start.skipping = 1

有关此内容的详细信息,请参阅此link

猪的坏记录处理

Pig本身就是为处理不良记录而设计的。 处理千兆字节或太字节数据时,几乎至少有一行损坏或会导致意外结果的可能性非常大。一个例子是除零,即使没有记录在分母中有零。导致整个工作失败的一个坏记录并不好。为了避免这些失败,Pig插入一个null,发出警告并继续处理。这样,工作仍然完成。警告汇总并在最后报告为计数。您应该检查警告,以确保您的工作中可以接受几条记录的失败。如果您需要了解有关警告的更多详细信息,可以通过在命令行上传递-w来关闭聚合。

请参阅与{

>相关的this有用链接

答案 1 :(得分:1)

在蜂巢中,您可以通过利用此属性的最佳值来实现

设置mapreduce.map.skip.maxrecords = ??

答案 2 :(得分:0)

mapreduce.reduce.maxattempts已替换为mapred.reduce.max.attempts,默认为4,因此不应将其设置为100,这似乎很高。

mapred.map.max.attempts已替换为mapreduce.map.maxattempts,默认为4,因此不应将其设置为100,这似乎很高。

mapred.skip.attempts.to.start.skipping已被mapreduce.task.skip.start.attempts取代,默认为2,这似乎已经足够了。

mapred.skip.map.max.skip.records已替换为mapreduce.map.skip.maxrecords

mapred.skip.mode.enabled似乎不再可用,因此可能不需要设置。

因此,唯一可以提供帮助的设置如下:

SET mapreduce.map.skip.maxrecords = 30000;