首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop/Hive分布式缓存处理非常大的字典文件的替代解决方案?

Hadoop/Hive分布式缓存处理非常大的字典文件的替代解决方案?
EN

Stack Overflow用户
提问于 2015-09-15 00:42:08
回答 1查看 445关注 0票数 0

我们正在Hadoop和Hive上创建一个类似字典的应用程序。一般的过程是针对一个大的固定字典(大约100G,类似于多语言WordNet字典)批量扫描数十亿的日志数据(例如单词)。

我们已经有了java应用程序的单机版本(让我们称之为"singleApp")来查询这个字典。我们目前既不能修改这个MapReduce应用程序,也不能修改字典文件,因此我们不能重新设计和重新编写一个全新的java应用程序。我们需要使用这个单机版本的Java Application作为构建块,将其扩展到MapReduce版本。

目前,我们可以通过调用这个"singleApp“来创建MapReduce应用程序,并使用分布式缓存传递字典的子集(例如1G字典)。然而,如果我们使用完整的字典(100G),应用程序启动起来非常非常慢。此外,我们真的希望将这些字典安装到Hadoop集群中,而不是每次都使用-file或分布式缓存选项调用它。

我们尝试将字典文件直接复制到从节点的本地磁盘中,并将java应用程序指向它,但它找不到字典。如果我们想要调试更多关于这种方法的东西,有什么文档需要做吗?

对于我们处理这种情况(非常大的字典文件,并且更喜欢一直安装字典文件)的最佳实践/流程,有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-09-21 14:34:17

对于100‘t的数据,您不需要使用Hadoop。您也可以将分布式缓存用作处理平台。

将分布式缓存视为内存中的数据网格。

尝试使用您的MapReduce用例对Open Source In-Memory DataGrid执行TayzGrid操作。

代码语言:javascript
复制
public class ProductAnalysisMapper implements 
                             com.alachisoft.tayzgrid.runtime.mapreduce.Mapper {

    @Override
    public void map(Object ikey, Object ivalue, OutputMap omap) 
    {
          //This line emits value count to the map.
          omap.emit(ivalue, 1);
    }
}

public class ProductAnalysisReducer implements
                      com.alachisoft.tayzgrid.runtime.mapreduce.Reducer {

    public ProductAnalysisReducer(Object k) { /* ... */ }

    @Override
    public void reduce(Object iv) { /* ... */ }

    @Override
    public void finishReduce(KeyValuePair kvp) { /* ... */ }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32569778

复制
相关文章

相似问题

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