【问题标题】:Getting error in apache spark simple program在 apache spark 简单程序中出现错误
【发布时间】:2016-01-31 10:03:47
【问题描述】:

我正在做一个简单的例子,在 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);
    }
}

【问题讨论】:

    标签: java apache-spark


    【解决方案1】:

    你可以试试 字符串文件 = "hdfs://localhost/my.txt"

    PS:请确保您在 hdfs 中有此文件 my.txt。 如果您没有该文件 hdfs,请按照以下命令将文件从本地目录放入 hdfs。

    Hadoop fs -copyFromLocal /home/training/my.txt hadoop/

    【讨论】:

    • 感谢兄弟的帮助!但我找到了解决方案.. 我们不必在路径中指定文件扩展名!
    • 任何时候都可以标记为答案,如果它可以帮助你
    【解决方案2】:

    老问题但答案从未被接受,我阅读时的错误是将 Spark 的“本地”概念与“localhost”混合在一起。

    使用这个构造函数:JavaSparkContext(java.lang.String master, java.lang.String appName),你会想使用:

    JavaSparkContext sc = new JavaSparkContext("localhost", "Simple App");
    

    但问题是使用“本地”。此外,HDFS 文件名didn't specify a hostname:"hdfs://SomeNameNode:9000/foo/bar/"or

    "hdfs://host:port/absolute-path"
    

    从 1.6.2 开始,JavaSparkContext 的 Javadoc 没有显示任何让您直接指定集群类型的构造函数:

    http://spark.apache.org/docs/latest/api/java/index.html?org/apache/spark/api/java/JavaSparkContext.html

    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

    【讨论】:

      【解决方案3】:

      你可以试试这个简单的字数统计程序

      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");
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-17
        • 2015-05-24
        • 2015-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多