代码如下所示
环境hadoop2.8.0
package com.qf.gmall.orderStatus;
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.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;
public class OrderStatusDriver {
static {
System.setProperty("hadoop.home.dir","A:\\hadoop-2.8.0");
System.load("A:\\hadoop-2.8.0\\bin\\hadoop.dll");
}
public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {
Configuration configuration = new Configuration();
Job job = Job.getInstance(configuration);
//关联类
job.setJarByClass(OrderStatusDriver.class);
job.setMapperClass(OrderStatusMapper.class);
job.setReducerClass(OrderStatusReduce.class);
//设置map阶段输出类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job,new Path("hdfs://192.168.221.3:9000/gmall1_data/order_info/data/2023-05-25"));
FileOutputFormat.setOutputPath(job,new Path("hdfs://192.168.221.3:9000/out"));
job.waitForCompletion(true);
}
}
报错显示:
已尝试:
Hadoop的jar包版本与Hadoop集群一致
重新启动hadoop集群
集群配置文件均正常配置
"No FileSystem for scheme: hdfs"错误通常是由于Hadoop配置不正确或者Hadoop服务未启动导致的。以下是一些可能的解决方法:
检查Hadoop配置:请确保Hadoop的配置正确,包括core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml等配置文件。特别是,需要确保core-site.xml中的fs.defaultFS属性设置为hdfs://namenode:port,其中namenode是Hadoop的NameNode主机名或IP地址,port是Hadoop的NameNode端口号。
检查Hadoop服务是否启动:请确保Hadoop服务已经启动,包括NameNode、DataNode、ResourceManager和NodeManager等服务。可以使用jps命令来检查Hadoop服务是否启动,例如jps | grep NameNode。
检查Hadoop版本:请确保使用的Hadoop版本与代码中使用的Hadoop版本一致。如果版本不一致,可能会导致No FileSystem for scheme: hdfs错误。
检查Hadoop依赖库:请确保代码中使用的Hadoop依赖库正确,包括hadoop-common、hadoop-hdfs、hadoop-mapreduce-client-core和hadoop-yarn-client等库。
如果以上方法都无法解决问题,建议检查Hadoop的日志文件,查看是否有其他错误信息。可以在Hadoop的日志目录中查找相关日志文件,例如$HADOOP_HOME/logs目录。
总之,No FileSystem for scheme: hdfs错误通常是由于Hadoop配置不正确或者Hadoop服务未启动导致的,需要检查Hadoop配置、Hadoop服务是否启动、Hadoop版本和Hadoop依赖库等方面,以及查看Hadoop的日志文件,找出具体的错误原因。
【由 http://www.gpt100.chat/ 生成】
7、由于有两种方式传参,因此可以直接传conf