【发布时间】:2017-06-04 07:54:22
【问题描述】:
我正在使用 Apache Spark 和 Apache Kylin,我必须在 HDFS 中存储一个 csv 文件才能在 Kylin 中创建一个立方体。这个想法是将我获得的 RDD 转换为 csv 文件,我试图将我的 RDD 转换为 csv 文件,如下所示:
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;
}
....
我不确定我做错了什么,我试图将 java.util.date 转换为 java.sql.date 但我仍然得到同样的错误,但使用 java.sql.date。
【问题讨论】:
-
我不得不问一个显而易见的问题,它想要什么日期对象类型?
-
我意识到它不接受 java.date.util,因此我使用了时间戳,现在它正在工作。你能解释一下你是怎么知道的吗?我的意思是因为线路错误??我正在学习,因此我无法看到它需要哪种日期对象类型。
-
是的,我从线路错误中知道。它说它不匹配,这意味着它正在寻找特定的东西。
标签: java csv hadoop apache-spark