我是hadoop的新手,最近我被要求使用Hadoop做一个测试项目。 所以当我正在重读BigData时,碰巧知道了Pail。现在我想要做的就是这样。首先创建一个简单的对象,然后使用Thrift将其序列化,并使用Pail将其放入Hdfs。然后我想在map函数中获取该对象并执行我想要的任务。但我不知道在地图函数中获取tat对象。
有人可以告诉我任何参考文献或解释如何做到这一点吗?
Thanx
答案 0 :(得分:0)
我可以想到三个选择:
-files
选项并在HDFS中命名文件(因为任务跟踪器将为该节点上运行的所有作业下载文件一次,这是优选的)对于某些代码,将加载逻辑放入映射器的setup(...)
或configure(..)方法(取决于您使用的是新API还是旧API),如下所示:
protected void setup(Context context) {
// the -files option makes the named file available in the local directory
File file = new File("filename.dat");
// open file and load contents ...
// load the file directly from HDFS
FileSystem fs = FileSystem.get(context.getConfiguration());
InputStream hdfsInputStream = fs.open("/path/to/file/in/hdfs/filename.dat");
// load file contents from stream...
}
DistributedCache在Javadocs
中有一些示例代码