hadoop pig 不能 mkdir java 抛出 IO 异常

Posted

技术标签:

【中文标题】hadoop pig 不能 mkdir java 抛出 IO 异常【英文标题】:hadoop pig cannot mkdir java throw IO exception 【发布时间】:2013-06-20 20:12:24 【问题描述】:

我有一个来自 hadoop real world solution cookbook 的非常简单的脚本示例 我在 amazon cloudera clustertogov04 ami 上试试 它给了我无法 mkdir 的 java 异常? 但是我有足够的磁盘空间??

[ec2-user]$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvde1             8255928   3307252   4529300  43% /
tmpfs                  3757068         0   3757068   0% /dev/shm
/dev/xvdk            103212320    192116  97777324   1% /data

这里是脚本、命令、错误输出

weblogs = load '/data2/weblogs/weblog_entries.txt' as
(md5:chararray,
url:chararray,
date:chararray,
time:chararray,
ip:chararray);
md5_grp = group weblogs by md5 parallel 4;
store md5_grp into '/data/weblogs/weblogs_md5_groups.bcp';


pig -x local -f pig02 2>err02

2013-06-20 19:57:29,499 [Thread-4] INFO org.apache.hadoop.mapred.Merger - 到最后一个合并通道,总大小还剩 1 个段:299132 字节 2013-06-20 19:57:29,499 [线程 4] 信息 org.apache.hadoop.mapred.LocalJobRunner - 2013-06-20 19:57:29,519 [Thread-4] 警告 org.apache.hadoop.mapred.LocalJobRunner - job_local_0001 java.io.IOException: Mkdirs 未能创建文件:/data/weblogs/weblogs_md5_groups.bcp/_temporary/_attempt_local_0001_r_000000_0 在 org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:434) 在 org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:420) 在 org.apache.hadoop.fs.FileSystem.create(FileSystem.java:805) 在 org.apache.hadoop.fs.FileSystem.create(FileSystem.java:786) 在 org.apache.hadoop.fs.FileSystem.create(FileSystem.java:685) 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigTextOutputFormat.getRecordWriter(PigTextOutputFormat.java:98) 在 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.PigOutputFormat.getRecordWriter(PigOutputFormat.java:84) 在 org.apache.hadoop.mapred.ReduceTask.runNewReducer(ReduceTask.java:582) 在 org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:433) 在 org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:309) 2013-06-20 19:57:33,176 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 作业 job_local_0001 失败!停止运行所有相关作业 2013-06-20 19:57:33,180 [主要] 信息 org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 100% 完成 2013-06-20 19:57:33,182 [main] 错误 org.apache.pig.tools.pigstats.PigStatsUtil - 1 个地图减少作业失败! 2013-06-20 19:57:33,182 [main] INFO org.apache.pig.tools.pigstats.SimplePigStats - 检测到本地模式。下面报告的统计数据可能不完整 2013-06-20 19:57:33,185 [main] INFO org.apache.pig.tools.pigstats.SimplePigStats - 脚本统计:

HadoopVersion PigVersion UserId StartedAt FinishedAt 功能 2.0.0-cdh4.1.2 0.10.0-cdh4.1.2 ec2-用户 2013-06-20 19:57:27 2013-06-20 19:57:33 GROUP_BY

失败了!

猪栈跟踪--------------- ERROR 2244:作业失败,hadoop 不返回任何错误消息

org.apache.pig.backend.executionengine.ExecException: ERROR 2244: Job failed, hadoop 在 org.apache.pig.tools.grunt.GruntParser.executeBatch(GruntParser.java:140) 没有返回任何错误消息 在 org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:193) 在 org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:165) 在 org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:84) 在 org.apache.pig.Main.run(Main.java:430) 在 org.apache.pig.Main.main(Main.java:111) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597)

在 org.apache.hadoop.util.RunJar.main(RunJar.java:208)

【问题讨论】:

你能检查一下pig是否有写“/data/weblogs/”目录的权限吗? 【参考方案1】:

您的 Hadoop 作业似乎无法创建您在 STORE 中指定的目录

您是否尝试将输出存储到其他位置,例如您的主目录?

另外仅供参考,Pig 不会将其输出保存到名为“weblogs_md5_groups.bcp”的文件中,它实际上会创建一个具有该名称的目录。

【讨论】:

这可能是一个错字数据和数据2,但我关闭了实例,我将在以后验证它是否是这样..-thx

以上是关于hadoop pig 不能 mkdir java 抛出 IO 异常的主要内容,如果未能解决你的问题,请参考以下文章

Java UDF on Hadoop 输入参数——从 Pig on Hadoop 调用

Hadoop相关项目Hive-Pig-Spark-Storm-HBase-Sqoop

未设置 Hadoop Pig 输出目录

在单个节点上安装 PIG

在java中运行pig而不嵌入pig脚本

Pig和Hive的对比