如何避免Hadoop PIG和Hive中的坏记录?
How to avoid bad records in Hadoop PIG and Hive?
嗨,我是 Hadoop 的新手,我发现可以使用 SkipBadRecord class 在 Java map reduce 中跳过任何输入格式的坏记录,所以我只想知道这在 Pig 中是如何实现的和蜂巢?
在 Hive 中,您可以通过利用此 属性
的最佳值来实现
设置mapreduce.map.skip.maxrecords=??
Hive 中的错误记录处理
要在hive中过滤坏记录,您可以在查询中启用跳过模式。跳过模式的配置单元配置为:
SET mapred.skip.mode.enabled = true;
您需要在配置单元查询之前设置上述命令。
您还可以通过提供以下参数来限制配置:
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 本身就是为处理不良记录而设计的。
在处理数 GB 或 TB 的数据时,极有可能至少有一行已损坏或会导致意外结果。一个例子是除以零,即使没有记录应该在分母中有零。导致整个作业故障转移一个坏记录是不好的。为了避免这些失败,Pig 插入一个空值,发出警告,然后继续处理。这样,工作仍然完成。警告被汇总并在最后报告为计数。您应该检查警告以确保一些记录的失败在您的工作中是可以接受的。如果您需要了解有关警告的更多详细信息,可以通过在命令行中传递 -w 来关闭聚合。
请查看与猪有关的this有用的link
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;
嗨,我是 Hadoop 的新手,我发现可以使用 SkipBadRecord class 在 Java map reduce 中跳过任何输入格式的坏记录,所以我只想知道这在 Pig 中是如何实现的和蜂巢?
在 Hive 中,您可以通过利用此 属性
的最佳值来实现设置mapreduce.map.skip.maxrecords=??
Hive 中的错误记录处理
要在hive中过滤坏记录,您可以在查询中启用跳过模式。跳过模式的配置单元配置为:
SET mapred.skip.mode.enabled = true;
您需要在配置单元查询之前设置上述命令。 您还可以通过提供以下参数来限制配置:
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 本身就是为处理不良记录而设计的。 在处理数 GB 或 TB 的数据时,极有可能至少有一行已损坏或会导致意外结果。一个例子是除以零,即使没有记录应该在分母中有零。导致整个作业故障转移一个坏记录是不好的。为了避免这些失败,Pig 插入一个空值,发出警告,然后继续处理。这样,工作仍然完成。警告被汇总并在最后报告为计数。您应该检查警告以确保一些记录的失败在您的工作中是可以接受的。如果您需要了解有关警告的更多详细信息,可以通过在命令行中传递 -w 来关闭聚合。
请查看与猪有关的this有用的link
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;