博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySpace Mapreduce Framework:Qizmt
阅读量:5771 次
发布时间:2019-06-18

本文共 2169 字,大约阅读时间需要 7 分钟。

  临时要处理一批数据,目标是从销售订单明细获得电子商务常见的一些推荐:1.购买了XX的用户还购买了什么 2.XX经常和YY一起购买 3.XX商品被同一用户多次购买;这是典型的MapReduce场景,但由于数据量比较小22w条数据,实在不想搭Hadoop,就找了一个简单的方案搞定:Qizmt;

  看下项目简介:

 

 

   MySpace Qizmt is a mapreduce framework for executing and developing distributed   computation applications on large clusters of Windows servers. The MySpace Qizmt project develops open-source software for reliable, scalable, super-easy, distributed computation software.

 

  MySpace真是微软技术的忠实拥护者,这么多年不离不弃,MySpace架构演变的过程也影响了很多采用.net架构的网站,这一次他们开源的是基于.net的MapReduce框架.

  是的,C#编写MapReduce逻辑,我Win7的机器就可以跑起来;很快就搞定了,中间出了几个小状况,记录一下:

 

 

  1. 安装的时候有一个需要填写用户名密码的地方,这里一定要填写机器名或者域账号 比如: test-pc\administrator

 

  2. 安装完成之后qizmt已经注册到环境变量,可以在命令行环境中调用

 

  3. 第一次使用需要执行format  

 

  4. Qizmt会自己维护一套文件系统 DFS 你可以在安装目录查看DFS.XML查看文件系统的元数据

 

  5. 把文件拷贝到DFS系统中,可以使用:qizmt put \\admin-PC\d$\data\some_file.xml dfs://some_file.xml 注意这里使用的也是网络路径

 

  6.把文件从DFS拷贝出来,使用: qizmt get dfs://reslut_output.txt  

 

  7.qizmt edit xx.xml 可以修改MapReduce的代码,甚至是调试

 

  8.MapReduce代码支持.net Framework框架的其它类库,直接全namespace引用就可以,不过qizmt的编辑器没有提供对这些类库的智能提示

 

  9.MapReduce代码支持使用本地路径,比如"D:\data.csv"

 

 
  官方站点上提供了足够详细的Demo,文档,基本上所见即所得,不再赘述,地址 
 

MySpace Qizmt IDE/Debugger

 

MapReduce的处理思路并没有太复杂,可以看下面的演示代码:

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;namespace Kockerbeck.MapReduce{    ///     /// Very Simple MapReduce implementation in C#    ///     /// 
/// Thanks to Stephan Brenner. Refactored for C# 4.0 ///
public class MapReduce { public static int NumberOfCores = 4; public static Dictionary
> Execute
(Func
>> mapFunction, Func
, List
> reduceFunction, Dictionary
input) { var result = new Dictionary
>(); var maps = new Dictionary
>(); input.DivvyUp(NumberOfCores, l => l.ForEach(kv => maps.Add(mapFunction(kv.Key, kv.Value), i => i.Key, i => i.Value))); maps.DivvyUp(NumberOfCores, m => m.ForEach(map => result.Add(reduceFunction(map.Key, map.Value), i => map.Key, i => i))); return result; } }}

 

 

补上一张思路图(新标签打开,查看大图):

 

购买了XX的用户还购买了

 

微博:你关注的人也关注了

 

Map Reduce 做大数据量排序

 

最后,小图一张

 

转载地址:http://jmsux.baihongyu.com/

你可能感兴趣的文章
多重影分身:一套代码如何生成多个小程序?
查看>>
Oracle将NetBeans交给了Apache基金会
查看>>
填坑记:Uncaught RangeError: Maximum call stack size exceeded
查看>>
SpringCloud之消息总线(Spring Cloud Bus)(八)
查看>>
DLA实现跨地域、跨实例的多AnalyticDB读写访问
查看>>
实时编辑
查看>>
KVO原理分析及使用进阶
查看>>
【348天】每日项目总结系列086(2018.01.19)
查看>>
【294天】我爱刷题系列053(2017.11.26)
查看>>
Microsoft发布了Azure Bot Service和LUIS的GA版
查看>>
Google发布Puppeteer 1.0
查看>>
.NET开源现状
查看>>
可替换元素和非可替换元素
查看>>
2016/08/25 The Secret Assumption of Agile
查看>>
(Portal 开发读书笔记)Portlet间交互-PortletSession
查看>>
搭建vsftpd服务器,使用匿名账户登入
查看>>
AMD改善Linux驱动,支持动态电源管理
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
Java虚拟机管理的内存运行时数据区域解释
查看>>
人人都会深度学习之Tensorflow基础快速入门
查看>>