目前我学习如何在java中使用spark,但是我点击了org.apache.spark.SparkException:当我尝试类似这个例子的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();
}
但是有人可以解释为什么我的第一个代码无效吗?
答案 0 :(得分:0)