Expected authority at index 7: hdfs://

2929 단어 expect
hadoop 버전: 1.0.4
오늘 Test Forest를 뛸 때 뜻밖에도 이 문제가 발생했다.
 
Exception in thread "main" java.lang.IllegalArgumentException: Expected authority at index 7: hdfs://

	at java.net.URI.create(URI.java:859)

	at org.apache.hadoop.fs.FileSystem.getDefaultUri(FileSystem.java:131)

	at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:123)

	at org.apache.mahout.classifier.df.mapreduce.Classifier.run(Classifier.java:107)

	at org.apache.mahout.classifier.df.mapreduce.TestForest.mapreduce(TestForest.java:187)

	at org.apache.mahout.classifier.df.mapreduce.TestForest.testForest(TestForest.java:173)

	at org.apache.mahout.classifier.df.mapreduce.TestForest.run(TestForest.java:145)

	at mahout.fansy.partial.test.TestTestForest.main(TestTestForest.java:26)

Caused by: java.net.URISyntaxException: Expected authority at index 7: hdfs://

	at java.net.URI$Parser.fail(URI.java:2829)

	at java.net.URI$Parser.failExpecting(URI.java:2835)

	at java.net.URI$Parser.parseHierarchical(URI.java:3083)

	at java.net.URI$Parser.parse(URI.java:3034)

	at java.net.URI.<init>(URI.java:595)

	at java.net.URI.create(URI.java:857)

	... 7 more

TestForest 코드는 다음과 같습니다.
 
 
package mahout.fansy.partial.test;



import org.apache.hadoop.conf.Configuration;

import org.apache.mahout.classifier.df.mapreduce.TestForest;



public class TestTestForest {



	/**

	 *  TestForest

	 * @param args

	 * @throws Exception 

	 */

	public static void main(String[] args) throws Exception {

		String[] arg=new String[]{"-i","hdfs://ubuntu:9000/user/breiman/input/glass.data",

				"-ds","hdfs://ubuntu:9000/user/breiman/glass.info",

				"-m","hdfs://ubuntu:9000/user/breiman/glass.tree/forest.seq",

				"-a","-mr",

				"-o","hdfs://ubuntu:9000/user/breiman/out-testforest0"};

		Configuration conf=new Configuration();

		conf.set("mapred.job.tracker", "ubuntu:9001");

		conf.set("fs.default.name", "hdfs://");

		TestForest tf=new TestForest();

		tf.setConf(conf);

		Configuration confq=tf.getConf();

		System.out.println(confq);

		tf.run(arg);

	}



}


처음에는 그냥 Test Forest를 사용했어요.main(arg)에서 호출했지만 conf의 값을 설정할 수 없음을 발견했습니다. (즉 모두 기본값에 따라 이것은 안 됩니다. win7의 myeclipse에서 Hadoop을 호출하면 conf를 설정해야 합니다.) 하지만 어디에서 설정할 수 있는지 발견했습니다. 그래서 TestForest는 Configuration을 계승한 것입니다. 그리고 Configuration에 setConf 방법이 있습니다. 그래서 TestForest 대상을 실례화하고 setConf 방법으로 conf를 설정합니다.하지만 conf 설정이 잘못되어 위의 오류가 발생했습니다.어떻게 설정해야 하나요?사실 conf.set("fs.default.name", "hdfs://");conf.set("fs.default.name", "ubuntu:9000")으로 변경;이 중 ubuntu는 주 노드 기계 이름입니다.그리고 도망갈 수 있어.
나누다
옮겨 싣기 블로그 주소:http://blog.csdn.net/fansy1990
 
 

좋은 웹페이지 즐겨찾기