0
我看过关于这个主题的其他线程,仍然没有找到答案......猪访问分布式缓存StoreFunc
简单地说,我想从一个猪StoreFunc访问Hadoop分布式高速缓存,以及不是直接在UDF内。
相关PIG行代码:
DEFINE CustomStorage KeyValStorage('param1','param2','param3');
...
STORE BLAH INTO /path/ using CustomStorage();
相关的Java代码:
public class KeyValStorage<M extends Message> extends BaseStoreFunc /* ElephantBird Storage which inherits from StoreFunc */ {
...
public KeyValStorage(String param1, String param2, String param3) {
...
try {
InputStream is = new FileInputStream(configName);
try {
prop.load(is);
} catch (IOException e) {
System.out.println("PROPERTY LOADING FAILED");
e.printStackTrace();
}
} catch (FileNotFoundException e) {
System.out.println("FILE NOT FOUND");
e.printStackTrace();
}
}
...
}
配置名称是本地文件,我应该能够从分布式缓存读取的名字,但是,我得到一个FileNotFoundException。当我直接在PIG UDF中使用EXACT相同的代码时,该文件被找到,所以我知道该文件通过分布式缓存发送。我设置适当的参数,以确保发生这种情况:
<property><name>mapred.cache.files</name><value>/path/to/file/file.properties#configName</value></property>
任何想法如何解决这个问题?
谢谢!