【问题标题】:org.apache.spark.SparkException: Task not serializable (Java Spark RDD)org.apache.spark.SparkException:任务不可序列化(Java Spark RDD)
【发布时间】:2017-06-01 06:11:14
【问题描述】:

目前我正在学习如何在 java 中使用 spark,但我遇到了 org.apache.spark.SparkException: Task not serializable 当我尝试类似这个示例 https://spark.apache.org/docs/latest/sql-programming-guide.html#inferring-the-schema-using-reflection

这是我的代码:

Dataset<Row> sqlDF = spark.sql("SELECT * FROM Person LIMIT 15");
Encoder<String> stringEncoder = Encoders.STRING();
Dataset<String> namesByIndexDF = sqlDF.map(new MapFunction<Row, String>() {
           @Override
           public String call(Row row) throws Exception {
               return "Name:" + row.getString(4);
           }
       }, stringEncoder);

        namesByIndexDF.show();

希望有人可以帮助我。谢谢!

更新

我用这段代码修复了:

    private static MapFunction<Row, String> mapFunc(Integer idx, String name){
        return new MapFunction<Row, String>() {
            @Override
            public String call(Row row) throws Exception {
                return name+":"+row.get(idx);
            }
        };
    }

    public void testFunc(){
        Dataset<Row> sqlDF = spark.sql("SELECT * FROM Person LIMIT 15");

        //sqlDF.show();

        Encoder<String> stringEncoder = Encoders.STRING();
        Dataset<String> namesByIndexDF = sqlDF.map(mapFunc(1, "Test"), stringEncoder);
        namesByIndexDF.show();
    }

但是有人可以解释为什么我的第一个代码不起作用吗?

【问题讨论】:

    标签: java apache-spark rdd


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 2016-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 2020-09-22
      • 2015-05-31
      • 2016-07-27
      • 2015-08-22
      相关资源
      最近更新 更多