我有一个远程运行的hadoop集群.我能够完成教程:
在我的远程计算机上,因为有一个内置的hadoop实例.但是,我希望在本地执行相同的任务.对hadoop不熟悉我不知道怎么做.我想知道我是否可以运行程序并将结果发送回本地计算机.我不确定如何登录到我的远程计算机然后运行MapReduce作业.
这是我在远程计算机上的代码:
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class WordCount {
public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
} …Run Code Online (Sandbox Code Playgroud) 我想将一些比特合并成一个.我有这个方法:
public BitArray Encode(string source)
{
List<bool> encodedSource = new List<bool>();
for (int i = 0; i < source.Length; i++)
{
List<bool> encodedSymbol = this.Root.Traverse(source[i], new List<bool>());
encodedSource.AddRange(encodedSymbol);
}
BitArray bits = new BitArray(encodedSource.ToArray());
return bits;
}
Run Code Online (Sandbox Code Playgroud)
它返回0/1二进制位,现在我有这个代码向我显示输出:
foreach (bool bit in encoded)
{
MessageBox.Show((bit ? 1 : 0) + "");
}
Run Code Online (Sandbox Code Playgroud)
现在我只是为每个位显示一个MessageBox,但是我怎样才能将所有位连接成一个MessageBox,这可能是一个愚蠢的问题,但我无法绕过它.