编程题5:调用ZooKeeperJavaAPI,实现节点创建、获取、修改和删除等操作,按要求如下补充代码。public class ZookeeperTest {public static void main(String[] args) throws Exception {// 初始化ZooKeeper实例(zk地址、会话超时时间,与系统默认一致, watcher)ZooKeeper zk = new (1)("master:2181,slave1:2181,slave2:2181", 30000, new Watcher() {@Overridepublic void process(WatchedEvent event) {System.out.println("事件类型为: " + event.getType());System.out.println("事件发生的路径: " + event.(2)());System.out.println("通知状态为: " + event.getState());}});// 创建一个目录节点zk.create("/testRootPath", "testRootData".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);// 获取目录数据System.out.println(new String(zk.(3)("/testRootPath", false, null)));// 修改目录节点数据zk.(4)("/testRootPath", "modifytestRootData".getBytes(), -1);// 删除父目录节点zk.(5)("/testRootPath", -1);// 断开ZooKeeper客户端连接zk.close();}}
查看答案
编程题6:使用并行计算框架MapReduce实现TopN,按要求如下补充代码。......public class TopNMapper extends Mapper{private TreeMap repToRecordMap = new TreeMap();@Overrideprotected void map(LongWritable key, Text value,Context context){String line = value.(1)();String[] nums = line.split(" ");for(String num :nums){repToRecordMap.put(Integer.parseInt(num), " ");if((2).size()>5){repToRecordMap.remove(repToRecordMap.(3));}}}@Overrideprotected void cleanup(Context context){for(Integer i:repToRecordMap.keySet()){try {(4).write(NullWritable.get(), new IntWritable(i));} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.(5)();}}}}public class TopNReducer extends Reducer {private TreeMap repToRecordMap = (6)TreeMap(new Comparator() {public int (7)(Integer a,Integer b){return b-a;}});public void reduce(NullWritable key, Iterable values, Context context) throws IOException, InterruptedException{for((8)value:values){repToRecordMap.put(value.get(), " ");if(repToRecordMap.size()>5) {repToRecordMap.(9)(repToRecordMap.firstKey());}}for(Integer i:repToRecordMap.keySet()){context.write(NullWritable.get(),(10));}}}public class TopNRunner {public static void main(String[] args) throws Exception {Configuration conf = new Configuration();Job job = Job.getInstance(conf);job.setJarByClass((11));job.setMapperClass(TopNMapper.class);job.setReducerClass(TopNReducer.class);job.(12)(1);job.setMapOutputKeyClass(NullWritable.class);job.setMapOutputValueClass(IntWritable.class);job.setOutputKeyClass(NullWritable.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.setInputPaths(job,new Path("/input"));(13).setOutputPath(job,new Path("/output"));boolean res = job.(14)(true);System.(15)(res?0:1);}}