资源描述
q 半连接实例q 全局作业参数传递q 全局数据文件传递课程目标课程目标实例执行结果:半连接实例执行结果:半连接多数据源连接解决方法的限制多数据源连接解决方法的限制q如果数据源两两之间需要进行多个不同的主键和外键的连接,则无法一次性完成数据源的连接q通过多次使用MapReduce过程完成不同主/外键键的连接q例如,有三个数据源,Customers(CustomerID主键)、Orders(OrderID主键,CustomerID外键、ItemID外键)、Products(ItemID主键)q解决方法:设计两个MapReduce作业第一个作业完成Customers与Orders的连接第二个作业完成第一个作业的连接结果与Products的连接全局作业参数全局作业参数/数据的传递数据的传递qMapReduce作业处理过程中,有时需要让每个节点共享一些重要的计算参数或数据q对于小的计算参数,可以通过Configuration类来传递q对于较大的数据,可以用共享数据文件来进行传递q尽量避免用硬代码方式在程序中设置作业参数,而是设置作业参数q实现一个具有一定通用性的程序,允许任意指定字段作为参数运行程序时指定需传递的数据然后该参数作为一个属性保存在Configuration对象中并允许Map和Reduce节点从Configuration对象中获取和使用该属性值全局作业参数的传递全局作业参数的传递qConfiguration类提供的保存和获取属性的方法全局作业参数的传递实例全局作业参数的传递实例q需求:处理顾客和订单数数据集的连接连接主键参数希望通过在命令行中给出连接主键的列号来设置q代码实现将第1个输入参数设置为GroupKeyColIdx属性全局作业参数的传递实例全局作业参数的传递实例在Mapper或Reducer类的初始化方法中从Configuration对象中读取该属性值查询全局查询全局MapReduceMapReduce作业属性作业属性q程序可以通过Configuration对象,使用预定义的属性名称查询计算作业相关的信息查询全局查询全局MapReduceMapReduce作业属性作业属性q通过Configuration类中提供的属性获取方法进行,在属性读取方法中把相应的作业属性名设置好即可全局数据文件的传递全局数据文件的传递q通过分布式缓存实现数据文件的传递先将这些文件传送到分布式缓存中然后各个节点从分布式缓存中将文件复制到本地的文件系统中使用q为提高访问速度,通常会将较小的文件数据读入各节点的内存中使用q涉及的编程设置Job类public void addCacheFile(URL uri):将一个文件存放到分布式缓存中Mapper或Reducer的context类public Path getLocalCacheFiles():获取设置在分布式缓存中的文件路径,以便能将这些文件读入到每个节点全局数据文件的传递全局数据文件的传递q实现将文件存入分布式缓存:q从Mapper或Reducer的setup()方法中进行读取文件的初始化处理全局数据文件的传递全局数据文件的传递欢迎访问我们的官方网站
展开阅读全文