错误2997:遇到IOException。文件foo.py不存在

时间:2018-05-28 14:51:03

标签: hadoop apache-pig

我的PIG脚本有以下一行

register 'foo.py' USING jython as foo;

文件foo.py存在于HDFS根目录中。

但是当我运行我的代码时出现错误

ERROR 2997: Encountered IOException. File foo.py does not exist

我做谷歌并找到了这个帖子

Encountered IOException while registering python UDF in pig. File helloworld.py does not exist

解决方案似乎暗示必须在本地文件系统上复制foo.py才能使其正常工作。但这对我来说不是一个选择。

我想在HDFS上复制foo.py,然后在猪脚本中使用它。

我已经尝试了register './foo.py' USING jython as foo;,我可以确认根目录中有foo.py.

我也尝试将foo.py文件的权限更改为rwxrwxrwx,但猪无法找到该文件。

编辑::由于我使用的是Hortonworks bistro,我还尝试在UDF选项卡中注册我的UDF。但即使在注册后它仍会出现相同的错误。

Edit2 ::我还复制了/user/admin目录中的util.py并授予了rwxrwxrwx权限。但仍无法找到py文件。

Edit3 ::也尝试register 'hdfs://foo.py' USING jython as util;,但仍然无法找到它。

enter image description here

1 个答案:

答案 0 :(得分:2)

如果它位于根目录中,则需要 if message.content.upper().startswith('!BAN'): if "449706643710541824" in [role.id for role in message.author.roles]: await

为了澄清HDFS的加载,需要三个斜杠/foo.py(因为完整语法为hdfs:///foo.py

使用hdfs://namenode:port/fileURI表示运行命令的用户 HDFS用户文件夹的根