我正在使用Apache Spark和Apache Kylin,我必須在HDFS中存儲csv文件才能夠使用它創建Kylin中的多維數據集。我們的想法是一個RDD我得到轉換成csv文件,我是想我RDD轉化成CSV文件是這樣的:RDD到CSV JAVA
bookingDF.write().format("com.databricks.spark.csv").option("header", "true").save("hdfs://10.7.30.131:8020/tmp/hfile/e.csv");
,但我總是得到一個錯誤相當長的像這樣的,我覺得那是因爲我使用的對象領域日期:
17/01/19 14:50:24 ERROR Utils: Aborting taskscala.MatchError: Fri Dec 09 07:45:27 CET 2016 (of class java.util.Date)
at org.apache.spark.sql.catalyst.CatalystTypeConverters$StructConverter.toCatalystImpl(CatalystTypeConverters.scala:255)
at org.apache.spark.sql.catalyst.CatalystTypeConverters$StructConverter.toCatalystImpl(CatalystTypeConverters.scala:250)
at org.apache.spark.sql.catalyst.CatalystTypeConverters$CatalystTypeConverter.toCatalyst(CatalystTypeConverters.scala:102)...
向下跌破附上我使用的Java對象的代碼:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Booking implements Serializable {
private String bPk;
private String type;
private String transactionId;
private Boolean revisit;
private String device;
@JsonProperty("serverTime")
private Date time;
private String trackingId;
private String browserFamily;
@JsonProperty("action")
private String measure;
private String userId;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getMeasure() {
return measure;
}
public void setMeasure(String measure) {
this.measure = measure;
}
public String getBrowserFamily() {
return browserFamily;
}
public void setBrowserFamily(String browserFamily) {
this.browserFamily = browserFamily;
}
public void setTime(Date time) {
this.time = time;
}
public String getTrackingId() {
return trackingId;
}
public void setTrackingId(String trackingId) {
this.trackingId = trackingId;
}
public Date getTime() {
return time;
}
....
我不知道是什麼我做錯了,我試圖轉移orm java.util.date到java.sql.date,但我仍然獲得相同的錯誤,但與java.sql.date。
雖然我要問明顯的問題,日期對象類型是否需要? – EngineerExtraordinaire
我意識到它不接受java.date.util,因此我使用時間戳,現在它正在工作。你能解釋你是怎麼知道的嗎?我的意思是因爲線路錯誤?我在學習,因此我無法看到它需要哪個日期對象類型。 – Orbar
是的,我知道從行錯誤。它說它不匹配,這意味着它尋找特定的東西。 – EngineerExtraordinaire