Java操作Hadoop时出现的问题

本文介绍了在使用Java操作Hadoop时遇到的两个问题:1. PriviledgedActionException错误,可能由于Windows用户名为中文导致,解决方案是改用英文用户名或在路径中加入指定操作;2. 解决运行时找不到文件或目录的问题,尝试将hadoop-native解压缩到hadoop的lib/native目录下。
摘要由CSDN通过智能技术生成

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/里。

如若不行,另寻他法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值