我们正在Hadoop和Hive上创建类似应用程序的字典。 一般过程是针对大的固定字典(大约100G,如多语言WordNet字典)批量扫描数十亿个日志数据(例如,单词)。
我们已经有一个java应用程序的机器版本(让我们称之为“singleApp”)来查询这个字典。我们目前无法修改此java应用程序或字典文件,因此我们无法重新设计和重新编写完整的新MapReduce应用程序。我们需要使用这个单机版Java Application作为构建块,将其扩展为MapReduce版本。
目前,我们可以通过调用此“singleApp”创建MapReduce应用程序,并使用分布式缓存传递字典的子集(例如1G字典)。但是,如果我们使用完整字典(100G),那么应用程序的启动速度非常慢。此外,我们确实希望将这些词典安装到Hadoop集群中,而不是每次使用-file或分布式缓存选项都调用它。
我们尝试将字典文件直接复制到从属节点中的本地磁盘并将Java应用程序指向它,但它找不到字典。如果我们想要在这种方法上调试更多,需要做什么的任何文件?
关于什么应该是我们处理这样的情况的最佳实践/过程的任何建议(非常大的字典文件,并且更喜欢一直安装字典文件)?
答案 0 :(得分:1)
您不需要使用Hadoop来获取100GB的数据。您也可以将分布式缓存用作处理平台。
将分布式缓存视为内存数据网格。
尝试使用Open Source In-Memory DataGrid和MapReduce使用例如你的{{3}}来使用TayzGrid。
var button : AVAudioPlayer?
in didMoveToView:
if let button = self.setupAudioPlayerWithFile("button", type:"m4a") {
self.button = button
}
func setupAudioPlayerWithFile(file:NSString, type:NSString) -> AVAudioPlayer? {
let path = NSBundle.mainBundle().pathForResource(file as String, ofType: type as String)
let url = NSURL.fileURLWithPath(path!)
var error: NSError?
var audioPlayer:AVAudioPlayer?
audioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
return audioPlayer
}