我正在Map程序代码中使用本机方法。
class Map extends Mapper<LongWritable, Text, LongWritable, Text>{
static{
System.loadLibrary("myjni");
}
public native String getRow(String record, String query);
public void map(...){
//...
}
}
我执行了所有必要的步骤来创建jni库文件- .so
. 我也复制了这个 .so
文件到hdfs。但是hadoop仍然无法识别路径。这是一个错误- no myjni in java.libarary.path.
如何让mapper知道本机库文件的路径。请帮忙。谢谢。
1条答案
按热度按时间ryevplcw1#
hdfs中的文件基本上是未知的,除了明确设计为支持hdfs的软件。特别是,java及其类加载器对hdfs一无所知。要使基于hdfs的文件出现在本机文件系统中以供此类使用,请在mapreduce作业中使用“DistributedCache”api。这是一种将基于hdfs的文件和存档缓存到本地文件系统的机制(在yarn中,类似的功能称为“资源本地化”)。请参见以下帮助:
stackoverflowyahoo教程