我怎样才能使用java的hdfs中创build一个新的目录?

public static void main(String[] args) throws IOException, URISyntaxException 

{configurationconfiguration=新的configuration();

  config.set("fs.default.name","hdfs://127.0.0.1:50070/dfshealth.jsp"); FileSystem dfs = FileSystem.get(config); String dirName = "TestDirectory"; Path src = new Path(dfs.getWorkingDirectory()+"/"+dirName); dfs.mkdirs(src); 

}}

Thier是在org.apache的org.apache.hadoop.metrics2.lib.DefaultMetricsSystem(DefaultMetricsSystem.java:37)中的线程“main”java.lang.NoClassDefFoundError:org / apache / commons / configuration / Configuration中的exception。 hadoop.metrics2.lib.DefaultMetricsSystem。(DefaultMetricsSystem.java:34)at org.apache.hadoop.security.UgiInstrumentation.create(UgiInstrumentation.java:51)at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java :217)在org.apache.hadoop.security.UserGroupInformation.isSecurityEnabled(UserGroupInformation.java:237)org.apache.hadoop.security上的org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:185)。 KerberosName。(KerberosName.java:79)at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:210)at org.apache.hadoop.security.UserGroupInformation.ensureInitialized(UserGroupInformation.java:185)at org。 apache.hadoop.security.UserGroupInformation.isSecurityEn 能够(UserGroupInformation.java:237)在org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:482)在org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:468)在org.apache .hadoop.fs.FileSystem $ Cache $ Key。(FileSystem.java:1519)at org.apache.hadoop.fs.FileSystem $ Cache.get(FileSystem.java:1420)at org.apache.hadoop.fs.FileSystem。 get(FileSystem.java:254)at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:123)at com.TestConnection.main(TestConnection.java:21)引起:java.lang.ClassNotFoundException:org 。java.net.URLClassLoader上的.apache.commons.configuration.Configuration $ 1.run(URLClassLoader.java:366)at java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)at java.security.AccessController.doPrivileged(Native方法)在java.net.URLClassLoader.findClass(URLClassLoader.java:354)at java.lang.ClassLoader.loadClass(ClassLoader.java:425)at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)at java.lan g.ClassLoader.loadClass(ClassLoader.java:358)… 17更多Configration是真的是什么问题? 任何帮助!

对于你的问题,你必须添加commons-configuration-1.6.jar jar ..

我列出了下面的必要的罐子

 { Configuration config = new Configuration(); config.addResource(new Path("/etc/hadoop/conf/core-site.xml")); config.addResource(new Path("/etc/hadoop/conf/hdfs-site.xml")); config.set("fs.hdfs.impl", org.apache.hadoop.hdfs.DistributedFileSystem.class.getName() ); config.set("fs.file.impl", org.apache.hadoop.fs.LocalFileSystem.class.getName() ); FileSystem dfs = FileSystem.get(config); String dirName = "TestDirectory"; System.out.println(dfs.getWorkingDirectory() +" this is from /n/n"); Path src = new Path(dfs.getWorkingDirectory()+"/"+dirName); dfs.mkdirs(src); } } 

你必须在你的构建路径中添加下面的罐子列表。

公共-CLI-1.2.jar

公地集合-3.2.1.jar

公共配置-1.6.jar

公地郎2.5.jar

共享记录-1.1.1.jar

番石榴11.0.2.jar

Hadoop的auth.jar

Hadoop的common.jar

的protobuf-java的2.4.0a.jar

SLF4J-API-1.6.1.jar

log4j的-1.2.17.jar

Hadoop的hdfs.jar

如果是cloudera,这些所有的jar文件都在hadoop / lib文件夹中。

您错过了Apache Commons Configuration依赖关系。 下载jar并将其添加到您的构建/类路径。