- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
正如标题所说,我有一个关于map-reduce的任务设计:
经过思考,我认为只需要将部分数据(可能是10%的数据)送入reducer,剩下的数据直接输出到HDFS即可。然后最后,我只是合并了 mapper 和 reducer 的这两个输出文件(我必须得到一个关于这个总数据的统一文件或目录)。我认为,通过这样做,可以降低此任务运行的带宽成本。
那么我的想法能实现吗? (我知道如何直接从 mapper 输出到 HDFS,但这需要 mapper 既输出到 HDFS 又将数据发送到 reducer)
最佳答案
一种解决方案是使用 MultipleOutputs's write() method对于 90% 的文件和其余 10% 的文件,您可以使用映射器中的普通 context.write()
,这样它们就只进入 reducer。
可以使用 MultipOutputs 中的这个函数 -
void write(K key, V value, String baseOutputPath);
第二种解决方案是使用 FileSystem (来自Hadoop Api)直接让Mapper将90%的文件输出到HDFS。但我不知道如果你运行很多映射器,效率会有多高。上面的 MultipleOutput 也是如此 -
类似于:
在 mapper 的 setup() 函数中执行此操作 -
FileSystem fs = file.getFileSystem(context.getConfiguration());
FSDataOutputStream fileOut = fs.create(new Path("your_hdfs_filename"));
在 map() 函数中执行此操作 -
create() 函数会返回一个 FSDataOutputStream 对象。使用 write() 函数写入文件。
完成后在 cleanup() 函数中关闭 FileSystem 对象。类似于 - fs.close();
关于hadoop - hadoop能否让mapper将部分数据发送给reducer,剩下的数据直接输出到HDFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18071498/
案例研究如下, Tasks Table has an Order ID. 1 Task is belonged to an Order Table. An Order can have many ta
我有一个 fiddle ,如下所示,在位置 4(图片 4、图片 5、图片 6),我想要交叉淡入淡出(淡入/淡出) 要发生的图片库。目前该位置只显示图6。 https://jsfiddle.net/k0
我是一名优秀的程序员,十分优秀!