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