java—如何在hadoop map reduce中设置使用jni创建的库文件的路径

uyto3xhc  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(334)

我正在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知道本机库文件的路径。请帮忙。谢谢。

ryevplcw

ryevplcw1#

hdfs中的文件基本上是未知的,除了明确设计为支持hdfs的软件。特别是,java及其类加载器对hdfs一无所知。要使基于hdfs的文件出现在本机文件系统中以供此类使用,请在mapreduce作业中使用“DistributedCache”api。这是一种将基于hdfs的文件和存档缓存到本地文件系统的机制(在yarn中,类似的功能称为“资源本地化”)。请参见以下帮助:
stackoverflowyahoo教程

相关问题