如何避免Hadoop PIG和Hive中的不良记录?
您好,我是Hadoop新手,我发现任何输入格式的不良记录都可以在Java map reduce中使用SkipPadRecord类跳过,所以我只想知道如何在Pig和Hive中实现这一点?在Hive中,您可以通过利用此属性的最佳值来实现如何避免Hadoop PIG和Hive中的不良记录?,hadoop,hive,apache-pig,Hadoop,Hive,Apache Pig,您好,我是Hadoop新手,我发现任何输入格式的不良记录都可以在Java map reduce中使用SkipPadRecord类跳过,所以我只想知道如何在Pig和Hive中实现这一点?在Hive中,您可以通过利用此属性的最佳值来实现 在配置单元中设置mapreduce.map.skip.maxrecords=??,您可以通过利用此属性的最佳值来实现 设置mapreduce.map.skip.maxrecords=??配置单元中的坏记录处理 要过滤配置单元中的坏记录,可以在查询中启用跳过模式。跳过
在配置单元中设置mapreduce.map.skip.maxrecords=??,您可以通过利用此属性的最佳值来实现
设置mapreduce.map.skip.maxrecords=??配置单元中的坏记录处理 要过滤配置单元中的坏记录,可以在查询中启用跳过模式。跳过模式的配置单元配置为:
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
有关这方面的更多详细信息,请参阅
清管器不良记录处理 Pig本身就是用来处理不良记录的。 在处理千兆字节或万亿字节的数据时,至少有一行已损坏或将导致意外结果的可能性是巨大的。一个例子是被零除,即使没有记录的分母应该是零。导致整个作业因一个不良记录而失败是不好的。为了避免这些失败,Pig插入空值,发出警告,然后继续处理。这样,工作仍然完成。警告被聚合,并在末尾作为计数报告。您应该检查警告,以确保少数记录的失败在您的工作中是可以接受的。如果需要了解有关警告的更多详细信息,可以通过在命令行上传递-w来关闭聚合
请查看与pig相关的有用链接在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
有关这方面的更多详细信息,请参阅
清管器不良记录处理 Pig本身就是用来处理不良记录的。 在处理千兆字节或万亿字节的数据时,至少有一行已损坏或将导致意外结果的可能性是巨大的。一个例子是被零除,即使没有记录的分母应该是零。导致整个作业因一个不良记录而失败是不好的。为了避免这些失败,Pig插入空值,发出警告,然后继续处理。这样,工作仍然完成。警告被聚合,并在末尾作为计数报告。您应该检查警告,以确保少数记录的失败在您的工作中是可以接受的。如果需要了解有关警告的更多详细信息,可以通过在命令行上传递-w来关闭聚合
请查看与pig相关的有用链接
mapreduce.reduce.maxattempts
已替换为mapreduce.max.attempts
,默认值为4,因此不应设置为似乎很高的100
mapred.map.max.attempts
已被mapreduce.map.maxtempts
替换,默认为4,因此不应设置为100,这似乎很高
mapred.skip.attempts.to.start.skip
已替换为mapreduce.task.skip.start.attempts
并默认为2,这似乎已经足够了
mapred.skip.map.max.skip.records
已替换为mapreduce.map.skip.maxrecords
mapred.skip.mode.enabled似乎不再可用,因此可能不需要设置
因此,唯一有帮助的设置如下所示:
设置mapreduce.map.skip.maxrecords=30000
mapreduce.reduce.maxattempts
已被mapred.reduce.max.attempts
替换,默认为4,因此不应设置为100,这似乎很高
mapred.map.max.attempts
已被mapreduce.map.maxtempts
替换,默认为4,因此不应设置为100,这似乎很高
mapred.skip.attempts.to.start.skip
已替换为mapreduce.task.skip.start.attempts
并默认为2,这似乎已经足够了
mapred.skip.map.max.skip.records
已替换为mapreduce.map.skip.maxrecords
mapred.skip.mode.enabled似乎不再可用,因此可能不需要设置
因此,唯一有帮助的设置如下所示:
设置mapreduce.map.skip.maxrecords=30000代码>在从一个配置单元表插入数据到另一个表时,我仍然遇到问题。我正在尝试使用以下查询将数据(超过3亿行)从配置单元表复制到Elasticsearch:-插入覆盖表表表名选择*自配置单元表名;&在插入一些行之后,我得到了这个异常。我知道这是因为ES中映射的数据类型不同。。。我想跳过插入那些给出错误的行,不仅此异常可能是其他异常。在从一个配置单元表插入数据到另一个表时,我仍然遇到问题。我正在尝试使用以下查询将数据(超过3亿行)从配置单元表复制到Elasticsearch:-插入覆盖表表表名选择*自配置单元表名;&在插入一些行之后,我得到了这个异常。我知道这是因为ES中映射的数据类型不同。。。我想跳过插入那些给出错误的行,不仅此异常可能是其他异常。感谢提供此属性名称。似乎mapred.skip.map.max.skip.records
已被弃用。感谢您提供此属性名称。似乎mapred.skip.map.max.skip.records
已被弃用。