java - 面临在本地模式下运行 Pig 的问题,在 java udf 中失败
问题描述
我有一个 Pig UDF(用 Java 编写),它从 HDFS 中的 JSON 文件中读取数据并进行进一步计算。
下面是给出错误的代码行(代码段中的最后一行)。因为它无法连接到 HDFS 来查找文件。
Path path = new Path(filename);
FileSystem fs = FileSystem.get(new Configuration());
br = new BufferedReader(new InputStreamReader(fs.open(path)));
但是我的猪单位正在通过,这没有问题。
我想编写一个在本地和 mapreduce 两种执行模式下运行的通用代码。
解决方案
我认为你需要调用这样的东西
FileSystem fs = path.getFileSystem(UDFContext.getUDFContext().getJobConf());
但是,如果您的 hdfs 具有任何类型的安全性,我希望这也会失败。Pig 本地模式纯粹用于本地,因此会跳过加载任何配置。 https://github.com/apache/pig/blob/a6c1a59eb42b600229bbe7f92b74363b515c1dfc/src/org/apache/pig/Main.java#L356-L358
推荐阅读
- c++ - 仅使用结构名称访问结构成员
- ftp - 如何将视频从 FTP 服务器播放到我的网站?
- c++ - 错误 LNK2001:未解析的外部符号 v8::platform::NewDefaultPlatform
- regex - 在 GCC 4.1.2 中对 c++(不是 c++11)代码使用正则表达式
- angular - 我需要在 Promise 中取消订阅 Observable 吗?
- angular - Angular 8 自定义框架
- java - 如何为 GrideView 列表添加 ViewHolder?
- haskell - 如何为所有 Monoid 编写长度函数
- database - 大查询数据过期
- reactjs - 服务器启动并运行,但网页未在 heroku 本地呈现