Apache Pig,抑制“输出位置验证失败”“输出目录......已经存在”

Posted

技术标签:

【中文标题】Apache Pig,抑制“输出位置验证失败”“输出目录......已经存在”【英文标题】:Apache Pig, Suppress "Output Location Validation Failed" "Output directory ... already exists" 【发布时间】:2012-05-04 02:07:13 【问题描述】:

在通过this question 从 orangeoctopus 获得帮助后,我现在需要禁止显示消息“输出位置验证失败”“输出目录...已经存在”。我知道目录存在,我想要那样。我很确定这将是覆盖我的存储 UDF 中的某些内容的问题,但我无法弄清楚是什么。对 Java 完全陌生,所以请多多包涵。提前致谢。

【问题讨论】:

【参考方案1】:

据我所知,您不能重用直接输出目录。 Hadoop 阻止了它。如果我理解正确,您正在处理每日日志,因此,我建议您设置一个名为 output 的父输出目录,并将脚本中的输出目录设置为 output/daily_date。

【讨论】:

由于我使用 UDF 进行存储,我很确定可以抑制该消息。我只需要弄清楚需要覆盖什么以及在哪里。我的计划是完全按照您所说的去做,除了在“目录已存在”检查之后将在 UDF 中创建这些目录。 好吧,我不熟悉在存储 UDF 中执行此操作的方法。如果你按照我的建议去做,你为什么需要 UDF 来做呢?为什么不使用 hadoop fs -mkdir 创建父目录,然后将运行日期作为参数发送到猪脚本,以便它知道将其保存在哪里? 克拉克,只是好奇你是否找到了解决方案。我也遇到了类似的问题,很想知道答案。【参考方案2】:

在存储操作之前删除你的输出目录:

rmf $outpath;

【讨论】:

以上是关于Apache Pig,抑制“输出位置验证失败”“输出目录......已经存在”的主要内容,如果未能解决你的问题,请参考以下文章

Apache pig 错误 org.apache.pig.backend.hadoop.executionengine.Launcher - 错误:org.apache.avro.file.DataF

Pig 错误:无法找到或加载主类 org.apache.pig.Main

pig 示例 apache [输入路径不存在]

错误包 org.apache.pig.FilterFunc 不存在

Pig AvroStorage + 记录中不支持的类型:类 org.apache.pig.data.DataByteArray

使用 java.lang.NoClassDefFoundError 在 AWS EMR 上运行 Pig UDF:org/apache/pig/LoadFunc