如何实例化Spark数据集<row> Java

时间:2017-06-13 21:45:01

标签: java apache-spark apache-spark-dataset

我在Spark网站,SO或Google上都没有找到任何内容。 我有一个服务设置并获取由另一个类创建的数据集,即

public class MainFrameServiceImpl implements MainFrameService {
    private Dataset<Row> queryDF = null;
    public MainFrameServiceImpl() {
//this.queryDF <--need to instantiate this

    }
    public void setDataset(Dataset<Row> queryDF) {
        this.queryDF = queryDF;
    }
    public Dataset<Row> getDataset() {
        return this.queryDF;
    }

}

但我确实无法返回数据集,除非它被实例化。当我尝试,我知道不应该工作,我得到错误

  

at org.apache.spark.serializer.SerializationDebugger $ SerializationDebugger.visitSerializable(SerializationDebugger.scala:189)     在   org.apache.spark.serializer.SerializationDebugger $ SerializationDebugger.visit(SerializationDebugger.scala:108)

基本上,我想在不同的类之间传递数据集并对它们进行GUI操作。 如果有另一种方式来传递信息而不会产生懒惰评估的火花,我会对所有建议持开放态度。

我尝试在服务中创建一个读取传递的数据集并实例化类Dataset的方法,但这不起作用。 例如:

public void setDatasetStruct(Dataset<Row> queryDF) {
        ExpressionEncoder<Row> encoder = RowEncoder.apply(queryDF.schema());
        this.queryDF = new Dataset<Row>(SparkManager.getSession(), queryDF.queryExecution().logical(), encoder);
        setDataset(queryDF);
    }

    public void setDataset(Dataset<Row> queryDF) {
        this.queryDF = queryDF;
    }

0 个答案:

没有答案