我正在做一个简单的例子,在java中的apache spark中使用Internet并且我得到了错误
引起:java.net.UnknownHostException:my.txt
你可以看到我的下面的代码作为参考!
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
public class MyCount {
public static void main(String[] args) {
// TODO Auto-generated method stub
String file = "hdfs://my.txt";
JavaSparkContext sc = new JavaSparkContext("local", "Simple App");
JavaRDD<String> lines = sc.textFile(file);
long nums = lines.count();
System.out.println(nums);
}
}
答案 0 :(得分:1)
PS:确保你在hdfs中有这个文件 my.txt 。 如果您没有该文件hdfs,请按照以下命令将文件从本地目录放入hdfs。
Hadoop fs -copyFromLocal /home/training/my.txt hadoop /
答案 1 :(得分:1)
老问题,但答案从未被接受,我读到它时的错误就是混合了#34;本地&#34; Spark的概念与#34; localhost。&#34;
使用此构造函数:JavaSparkContext(java.lang.String master, java.lang.String appName)
,您可能希望使用:
JavaSparkContext sc = new JavaSparkContext("localhost", "Simple App");
但问题是使用&#34; local&#34;。此外,HDFS文件名didn't specify a hostname:"hdfs://SomeNameNode:9000/foo/bar/"
或
"hdfs://host:port/absolute-path"
从1.6.2开始,Javadoc for JavaSparkContext没有显示任何构造函数,让您直接指定集群类型:
JavaSparkContext的最佳构造函数需要SparkConf对象。要做一些人类可读的东西,构建一个SparkConf对象,然后将其传递给JavaSparkContext,这是一个设置appname,指定Kryo序列化程序并设置master的示例:
SparkConf sparkConf = new SparkConf().setAppName("Threshold")
//.setMaster("local[4]");
.setMaster(getMasterString(masterName))
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.registerKryoClasses(kryoClassArray);
// create the JavaSparkContext now:
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
注意:备用.setMaster("local[4]");
将使用本地模式,OP可能一直在尝试。
我有一个more extended answer here that addresses using hostnames vs. IP addresses以及更多用于设置SparkConf
的内容答案 2 :(得分:0)
您可以尝试这个简单的字数统计程序
import org.apache.spark.SparkConf;
import org.apache.spark.SparkContext;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
public class First {
public static void main(String[] args) {
SparkConf sf = new SparkConf().setMaster("local[3]").setAppName("parth");
JavaSparkContext sc = new JavaSparkContext(sf);
JavaRDD<String> textFile = sc.textFile("input file path");
JavaRDD<String> words = textFile.flatMap((new FlatMapFunction<String, String>() {
public Iterable<String> call(String s) { return Arrays.asList(s.split(" ")); }}));
JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {
public Tuple2<String, Integer> call(String s) { return new Tuple2<String, Integer>(s, 1); }
});
JavaPairRDD<String, Integer> counts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {
public Integer call(Integer a, Integer b) { return a + b; }
});
counts.saveAsTextFile("outputfile-path");
}
}