MapReduce的Map Size Join以及Distributed Cache

首先介绍Distributed Cache(分布式缓存),主要功能是把DataNode(客户端)一些小的文件送到DataNode上。

1. 通过job.addCacheFile(new Path(filename).toUri)

2.通过job.addCacheFile(new URI("xx/xxx/xxx/xx.json#customer_type"))

通过1和2来传过去(都是URI 就是方便你知道在客户端上这些文件的位置  )

如果知道文件路径的话,new File正好帮你创建一个。

如果不知道文件路径,可以通过context一口气获取所有缓存的文件,放到一个列表里,这样想拿谁都可以。

客户端某个文件的内容会被拿到DataNode,但不会修改这些内容,拿过来默认是和原来的文件一样的名字。#号可以重新起名。

Map-Side Join就是这样,在mapper的setup方法里,把这些小表拿过来

erFile:File = new File("./er.csv") 

变成其他格式 比如Hashtable

然后和大表对照做Join

猜你喜欢

转载自blog.csdn.net/u011495642/article/details/83622870