Java操作Hadoop时出现的问题
1、
@Test
public void wordCountPollyanna() throws Exception {
final String ip = "192.168.47.132", inputPath = "/tmp/kb08/Pollyanna.txt", outputPath = "/tmp/poly";
Configuration config = new Configuration();
config.set("fs.defaultFS", MessageFormat.format("hdfs://{0}:9000", ip));
FileSystem fs = FileSystem.get(config);
// System.out.println(fs.exists(new Path(inputPath)));
// System.out.println(fs.deleteOnExit(new Path(outputPath)));
Job job = Job.getInstance(config, "pollywordcount");
job.setMapperClass(WordMapper.class);
//设置分区规则 可选 默认为HashPartitioner
job.setPartitionerClass(WordPartitioner.class);
//combiner传输,Reducer为落盘 可选 默认为空
job.setCombinerClass(WordReducer.class);
job.setReducerClass(WordReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
//起2个任务
job.setNumReduceTasks(2);
//分区规则
FileInputFormat.addInputPath(job, new Path(inputPath));
FileOutputFormat.setOutputPath(job, new Path(outputPath));
System.out.println(job.waitForCompletion(true));
}
运行时爆出错误:PriviledgedActionException as:LCH (auth:SIMPLE) cause:0: No such file or directory
原因:可能是windows用户名为中文,将其改为英文;若原来就是英文,那么在config.set("fs.defaultFS", MessageFormat.format("hdfs://{0}:9000", ip));
后面加一句 config.set("hadoop.tmp.dir","F:\\tool\\hadoop-260");
。注意:需要在windows下安装hadoop,输入的路径为hadoop的路径。
2、
如若运行时出现以下问题
将hadoop-native解压到hadoop根目录下的lib/native/里。
如若不行,另寻他法