-
Notifications
You must be signed in to change notification settings - Fork 234
一步一步 WordCount 示例
Fanping Liu edited this page Dec 22, 2013
·
7 revisions
1. 新建一个控制台应用程序(其它类型均可)。
2. 添加引用Iveely.CloudComputing.Client.exe。
3. 继承Application类,重写Run()方法。
` public class MyWordCount : Application
{
public override void Run(object[] args)
{
//0.先初始化
this.Init(args);
//1.虚拟数据构建
string[] contents =
{
"This is Iveely Computing",
"Weclome here",
"Iveely is I void every thing,except love",
"Thanks,Iveely Team."
};
StringBuilder dataBuilder = new StringBuilder();
for (int i = 0; i < 1000; i++)
{
Random random = new Random(i);
int index = random.Next(0, 4);
dataBuilder.AppendLine(contents[index]);
}
string[] words = dataBuilder.ToString().Split(new[] { ' ', ',', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
WriteToConsole("local words count:" + words.Length);
int globalWordCount = Mathematics.Sum<int>(words.Length);
WriteToConsole("global words count:" + globalWordCount);
//2.子节点处理数据
Hashtable table = new Hashtable();
foreach (string word in words)
{
if (table.ContainsKey(word))
{
table[word] = int.Parse(table[word].ToString()) + 1;
}
else
{
table.Add(word, 1);
}
}
//3.归并所有结点处理结果
WriteToConsole("local word frequency count:" + table.Keys.Count);
table = Mathematics.CombineTable(table, args);
WriteToConsole("global word frequency count:" + table.Keys.Count);
//4.写入文件
StringBuilder builder = new StringBuilder();
foreach (DictionaryEntry dictionaryEntry in table)
{
builder.AppendLine(dictionaryEntry.Key + " " + dictionaryEntry.Value);
}
WriteText(builder.ToString(), "WordCount.result", true);
}
}`
4. 提交自己的程序。
5. 查看运行结果。