【问题标题】:Error when trying to execute pig statment尝试执行 pig 语句时出错
【发布时间】:2017-09-15 16:05:19
【问题描述】:

我正在尝试执行一个 pig 语句,该语句向我显示 txt 文件中的数据,并且我在 mapreduce 模式下运行,但是我收到一个错误,请有人帮我解决这个问题!

[root@master ~]# pig -x mapreduce
    17/04/19 17:42:34 INFO pig.ExecTypeProvider: Trying ExecType : LOCAL
    17/04/19 17:42:34 INFO pig.ExecTypeProvider: Trying ExecType : MAPREDUCE
    17/04/19 17:42:34 INFO pig.ExecTypeProvider: Picked MAPREDUCE as the ExecType
    2017-04-19 17:42:34,853 [main] INFO  org.apache.pig.Main - Apache Pig version 0.16.0 (r1746530) compiled Jun 01 2016, 23:10:49
    2017-04-19 17:42:34,853 [main] INFO  org.apache.pig.Main - Logging error messages to: /root/pig_1492603954851.log
    2017-04-19 17:42:34,907 [main] INFO  org.apache.pig.impl.util.Utils - Default bootup file /root/.pigbootup not found
    2017-04-19 17:42:36,060 [main] INFO  org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://localhost
    2017-04-19 17:42:37,130 [main] INFO  org.apache.pig.PigServer - Pig Script ID for the session: PIG-default-f60d05c3-9fee-4624-9aa8-07f1584e6165
    2017-04-19 17:42:37,130 [main] WARN  org.apache.pig.PigServer - ATS is disabled since yarn.timeline-service.enabled set to false
    grunt> dump b;
    2017-04-19 17:42:41,135 [main] ERROR org.apache.pig.tools.grunt.Grunt - You don't have permission to perform the operation. Error from the server: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=EXECUTE, inode="/tmp/temp1549818457":dead:supergroup:drwx------
        at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319)
        at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:259)
        at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:205)
        at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1720)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1704)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkTraverse(FSDirectory.java:1692)
        at org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.mkdirs(FSDirMkdirOp.java:60)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:3894)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:983)
        at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:622)
        at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:969)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043)

    2017-04-19 17:42:41,136 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias b
    Details at logfile: /root/pig_1492603954851.log

【问题讨论】:

  • 你能检查一下吗:- stackoverflow.com/questions/7194069/…
  • 当我将 /tmp 目录权限更改为所有人都可以访问时,它给了我这些错误:- 输入:无法从“/temp”读取数据输出:无法生成导致“hdfs://localhost/tmp/temp1691370991/tmp-1112412323”计数器:写入的总记录:0 写入的总字节数:0 可溢出内存管理器溢出计数:0 主动溢出的包总数:0 主动溢出的总记录:0 作业 DAG : null org.apache.pig.tools.grunt.Grunt - 错误 1066: 无法打开别名 b 的迭代器
  • 检查您是否具有从文件夹中读取文件的适当权限。如果没有,那么也提供对 HDFS 文件夹的访问权限。
  • 我有权读取和显示文件,我也可以启动 mapreduce wordcount 程序,但是猪的东西不工作不知道为什么
  • 您能否用修改 pig.temp.dir 后遇到的新错误更新您的问题。

标签: hadoop mapreduce hdfs apache-pig


【解决方案1】:

你可以试试这个:-

 pig -x mapreduce -p 'pig.temp.dir'='<temp_location_hdfs>'

“temp_location_hdfs”应具有 775 或 777 权限。

那你可以试试:- hadoop fs -chmod -R 777 /tmp/*

【讨论】:

    【解决方案2】:

    您似乎没有对 pig.temp.dir 设置的适当权限,因此出现了这个问题。默认情况下,pig 将中间结果写入 HDFS 上的 /tmp。使用 -Dpig.temp.dir 覆盖它。

    【讨论】:

    • 用 -D pig.temp.dir 执行 pig
    • 你可以试试 hadoop fs -chmod -R 777 /tmp/* 这个然后重新执行 pig 语句。
    猜你喜欢
    • 2013-07-13
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-06
    • 2012-03-21
    • 1970-01-01
    相关资源
    最近更新 更多