如何从镶木地板创建数据集



我有以下代码将数据从镶木地板读取到Dataframe

DataFrame addressDF = sqlContext.read().parquet(addressParquetPath);

如何将数据从镶木地板读取到数据集?

Dataset dataset = sqlContext.createDataset(sqlContext.read().parquet(propertyParquetPath).toJavaRDD(), Encoder.);

Encoder参数应该包含什么?另外,我必须创建一个属性类然后传递它吗?

类型T的编码器是告诉Spark如何从内部Spark表示对T的实例进行解码和~编码的类。它包含类的模式和用于通过反射创建类的scala ClassTag。

在您的代码中,您没有将数据集专门化为任何类型的t,所以我不能为您创建编码器,但我可以举一个Databricks Spark文档中的例子,我建议您阅读它,因为它很棒。首先,让我们创建要加载到DateSet:中的类University

public class University implements Serializable {
    private String name;
    private long numStudents;
    private long yearFounded;
    public void setName(String name) {...}
    public String getName() {...}
    public void setNumStudents(long numStudents) {...}
    public long getNumStudents() {...}
    public void setYearFounded(long yearFounded) {...}
    public long getYearFounded() {...}
}

现在,University是一个Java Bean,Spark Encoders库提供了一种为Java Bean创建编码器的方法,其函数为Bean:

Encoder<University> universityEncoder = Encoders.bean(University.class)

然后可以用于从镶木地板读取University的数据集,而无需首先将其加载到DataFrame(这是冗余的):

Dataset<University> schools = context.read().json("/schools.json").as(universityEncoder);

并且现在CCD_ 7是从拼花地板文件读取的CCD_。

相关内容

  • 没有找到相关文章

最新更新