我有一个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执行模式下都可以运行的通用代码。
答案 0 :(得分:0)
我认为您需要拨打类似的电话
FileSystem fs = path.getFileSystem(UDFContext.getUDFContext().getJobConf());
但是,如果您的hdfs具有任何类型的安全性,我希望这也会失败。 Pig本地模式仅用于本地,因此会跳过加载任何配置。 https://github.com/apache/pig/blob/a6c1a59eb42b600229bbe7f92b74363b515c1dfc/src/org/apache/pig/Main.java#L356-L358