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 调用