對於T
類型的Encoder是告訴Spark如何從內部Spark表示中解碼和編碼T
實例的類。它包含類的模式和scala ClassTag,它用於通過反射來創建你的類。
在你的代碼中,你沒有專門研究任何類型T的數據集,所以我不能爲你創建一個編碼器,但我可以給你舉例來自Databricks Spark documentation,我建議閱讀它,因爲它很棒。 首先,讓我們來創建我們希望加載到一個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和火花Encoders
庫提供了一種方法來創建Java組件編碼器,功能bean :
Encoder<University> universityEncoder = Encoders.bean(University.class)
其然後可以被用於讀取的University
從鑲木一個數據集而不首先將它們載入一個數據幀(它是多餘的):
Dataset<University> schools = context.read().json("/schools.json").as(universityEncoder);
現在schools
是從地板文件中讀取的Dataset<University>
。