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

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

我的 PIG 脚本有以下行

register 'foo.py' USING jython as foo;

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

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

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

我做了 google 并找到了这个帖子

该解决方案似乎暗示必须将 foo.py 复制到本地文件系统才能使其工作。但这不是我的选择。

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

我已经尝试过 register './foo.py' USING jython as foo; 并且我可以确认 foo.py 存在于根 HDFS 目录中。

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

Edit:: 因为我使用的是 Hortonworks bistro,所以我还尝试在 UDF 选项卡中注册我的 UDF。但是注册了还是一样报错

Edit2::我也在/user/admin目录下复制了util.py,给了rwxrwxrwx权限。但是还是找不到py文件。

Edit3:: 也试过 register 'hdfs://foo.py' USING jython as util; 但还是找不到。

如果它在根目录中,您需要 /foo.py

为了阐明从 HDFS 加载,需要三个斜线 hdfs:///foo.py(因为完整语法是 hdfs://namenode:port/fileURI

使用 ./foo.py 意味着 HDFS 用户文件夹的根目录 用户 运行 命令