dfs.replication空指针异常
来源:3-21 HDFS API编程之副本系数深度剖析
weixin_慕神5384537
2021-04-20
//副本测试
@Test
public void testReplication(){
//System.out.println(configuration.get("dfs.replication"));
//configuration.get("dfs.replication");
System.out.println(configuration.get("dfs.replication"));
}
报错,空指针异常
我好像没有重新声明Configuration啊,为什么会空呢
package com.immoc.bigdata.hadoop.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.net.URI;
/**
-
使用java API操作HDFS文件系统
-
关键点:
-
1)创建Configuration
-
2)获取FileSystem
-
3)你的HDFS API操作
*/
public class HDFSAPP {//虚拟机IP192.168.1.127
//public static final String HDFS_PATH = “hdfs://hadoop000:8020”;public static final String HDFS_PATH = “hdfs://192.168.1.127:8020”;
FileSystem fileSystem = null;
Configuration configuration = null;@Before
public void setUp()throws Exception{
System.out.println(“setUp_____”);Configuration configuration=new Configuration(); //configuration.set("dfs.replication","1"); //configuration.set("dfs.client.use.datanode.hostname", "true"); /** * 构造一个访问指定HDFS系统的客户端对象 * 第一个参数:HDFS的URI * 第二个参数:客户端指定的配置参数 * 第三个参数:客户端的身份,即用户名 */ fileSystem=FileSystem.get(new URI(HDFS_PATH),configuration,"hadoop");
}
//创建HDFS文件夹
@Test
public void mkdir() throws Exception {
Path path=new Path("/hdfsapi/test");
fileSystem.mkdirs(path);
//fileSystem.mkdirs(new Path("/hdfsapi/test"));
}//查看hdfs内容
@Test
public void text()throws Exception{
FSDataInputStream in =fileSystem.open(new Path("/cdh_version.properties"));
IOUtils.copyBytes(in,System.out,1024);
}//创建文件
@Test
public void create()throws Exception{
//FSDataOutputStream out =fileSystem.create(new Path("/hdfsapi/test/a.txt"));
FSDataOutputStream out =fileSystem.create(new Path("/hdfsapi/test/b.txt"));
out.writeUTF(" hello PK:replication 1");
out.flush();
out.close();
//hadoop fs -cat /hdfsapi/test/a.txt
}//副本测试
@Test
public void testReplication(){
//System.out.println(configuration.get(“dfs.replication”));
//configuration.get(“dfs.replication”);
System.out.println(configuration.get(“dfs.replication”));
}@After
public void tearDown(){
configuration=null;
fileSystem=null;
System.out.println(“tearDown_”);
}//public static final String HDFS_PATH = “hdfs://hadoop000:8020”;
// public static void main(String[] args) throws Exception{
//
// //hadoop2017:8020
// //虚拟机IP192.168.1.127
// Configuration configuration=new Configuration();
// //FileSystem fileSystem=FileSystem.get(new URI(“HDFS_PATH”),configuration,“hadoop”);
// FileSystem fileSystem=FileSystem.get(new URI(“hdfs://192.168.1.127:8020”),configuration,“hadoop”);
//
//
//
// Path path=new Path("/hdfsapi/test");
// boolean result=fileSystem.mkdirs(path);
//
// System.out.println(result);
// }
}
1回答
-
这不是跟你原来的问题一个的么,configuration 你在哪定义的? 代码写完和git上提供的代码做个对比呢
022021-04-20
相似问题