首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在hadoop reducer中加载本机库?

在hadoop reducer中加载本机库?
EN

Stack Overflow用户
提问于 2012-10-19 03:44:34
回答 2查看 1.2K关注 0票数 1

我有一个本地库需要为我的reduce方法加载,我将它添加到分布式缓存中,但当我在map方法中调用System.loadLibrary(mylib.so)时,我得到一个错误和失败的map任务:

代码语言:javascript
运行
复制
Error: no mylib.so in java.library.path

即使我把它添加到分布式缓存中。我是不是漏掉了一步?在我的作业配置中,我调用:

代码语言:javascript
运行
复制
DistributedCache.addCacheFile(uri, job.getConfiguration());

其中,uri是hadoop文件系统上mylib.so的路径。

这个本地库依赖于许多其他库,它们都存在于hadoop fs上的/hadoop/fs/mystuff/libs中。我将它们全部添加到分布式缓存中,甚至尝试使用System.loadLibrary()调用在reduce任务中加载所有它们。但我一直收到相同的java.library.path错误。我还尝试将这些库作为命令行参数添加到-files标志中,但仍然收到上面的错误。

EN

回答 2

Stack Overflow用户

发布于 2012-10-19 12:08:49

虽然完全不确定为什么会发生这种情况,但请查看Cloudera的How to Include Third-Party Libraries in Your Map-Reduce Job博客条目。

票数 0
EN

Stack Overflow用户

发布于 2014-10-14 02:10:30

您是否尝试我们的代码独立,而不是在map-reduce中?据我所知,System.loadLibrary需要没有".so“或".dll”后缀的库名...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12962508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档