我正在编写一个mapreduce作业,我有要传递给内存中映射器的输入。
将输入传递给映射器的常用方法是通过Hdfs-sequencefileinputformat或Textfileinputformat。这些输入格式需要在fdfs中有文件,这些文件将被加载并拆分到映射器
我找不到一个简单的方法来传递,比如说向映射器传递元素列表。我发现自己不得不将这些元素写入磁盘,然后使用fileinputformat。
有什么解决方案吗?
我正在用java编写代码。
谢谢。
输入格式不必从磁盘或文件系统加载数据。也有从其他系统读取数据的输入格式,如HBase或(http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/mapred/TableInputFormat.html)其中数据并不隐含在磁盘上。它只意味着可以通过某些API在集群的所有节点上使用
因此,您需要实现输入格式,在您自己的逻辑中分割数据(一旦没有文件,这就是您自己的任务),并将数据分割成记录
。请注意,内存中的数据源应该是分布式的,并在集群的所有节点上运行。您还需要一些有效的IPC机制来将数据从您的进程传递到Mapper进程
我也很高兴知道是什么情况导致了这个不同寻常的要求。