猪本地模式溢出数据问题

Posted

技术标签:

【中文标题】猪本地模式溢出数据问题【英文标题】:pig local mode spill data issue 【发布时间】:2015-04-02 04:00:14 【问题描述】:

我正在尝试解决此问题,但无法理解。我的开发机器中的 pig 脚本成功运行在一个 1.8 GB 的数据文件上。 当我尝试在服务器中运行它时,它表明它找不到本地设备来溢出数据spill0.out 我已经修改了 pig.property 文件中的 pig.temp.Dir 属性以指向一个有空格的位置..

错误: org.apache.hadoop.util.DiskChecker$DiskErrorException: 找不到输出/spill0.out 的任何有效本地目录

那么如何找出 pig 溢出数据的位置以及我们能否以某种方式更改 pig 溢出目录的位置。

我在本地模式下使用 pig。

任何想法或建议或解决方法都会有很大帮助。

谢谢..

【问题讨论】:

【参考方案1】:

我找到了答案。

我们需要将以下内容放到 $PIG_HOME/conf/pig.properties 文件中

mapreduce.jobtracker.staging.root.dir
mapred.local.dir
pig.temp.dir

然后测试。

这帮助我解决了问题。

【讨论】:

【参考方案2】:

这不是 Pig 的问题。 我没有使用 Pig,我也有完全相同的错误。 这个问题似乎与 Hadoop 更相关。我也在本地模式下使用它。我正在使用 Hadoop 2.6.0

【讨论】:

【参考方案3】:

我对这些答案不满意,Pig(版本 0.15.0)仍在将 pigbag* 文件写入 /tmp 目录,所以我只是重命名了我的 /tmp 目录并创建了一个指向所需位置的符号链接,如下所示:

sudo -s #change to root
cd /
mv tmp tmp_local
ln -s /desired/new/tmp/location tmp
chmod 1777 tmp
mv tmp_local/* tmp

确保在运行这些命令时没有活动的应用程序写入 tmp 文件夹。

【讨论】:

以上是关于猪本地模式溢出数据问题的主要内容,如果未能解决你的问题,请参考以下文章

本地模式下的猪与没有 hadoop.jar 的猪之间的区别

在本地模式下运行 pig

从 oozie 以本地模式运行 PIG

数据仓库hive本地模式安装

黑猴子的家:Hive 本地模式

Pig 在本地模式与 mapreduce 模式下的性能