cassandra 2.0 SparkSQL不支持java。util。日期
Sawthis post,这意味着它在spark 1.2.0中是固定的。然而bug谈论的是java。sql。约会
不管怎样,这对我不起作用,我得到:
Exception in thread "main" scala.MatchError: class java.util.Date (of class java.lang.Class)
下面是一个代码示例:
public class DateSparkSQLExample {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("test").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
List<SomeObject> itemsList = Lists.newArrayListWithCapacity(1);
itemsList.add(new SomeObject(new Date(), 1L));
JavaRDD<SomeObject> someObjectJavaRDD = sc.parallelize(itemsList);
JavaSQLContext sqlContext = new org.apache.spark.sql.api.java.JavaSQLContext(sc);
sqlContext.applySchema(someObjectJavaRDD, SomeObject.class).registerTempTable("temp_table");
}
private static class SomeObject implements Serializable{
private Date timestamp;
private Long value;
public SomeObject() {
}
public SomeObject(Date timestamp, Long value) {
this.timestamp = timestamp;
this.value = value;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
public Long getValue() {
return value;
}
public void setValue(Long value) {
this.value = value;
}
}
}
谢谢, 狮子座
编辑1:
也许我是迫不及待地发布了这篇文章,因为SparkSQL明确指出日期的类型是java。sql。日期 然而,我想对从Cassandra加载的RDD使用相同的bean,然后注册到SparkSQL。因为在我的C*模型中,数据类型是timestamp(它被映射到java.util.Date),所以我不能真正做到这一点。 在我看来,使用同一个模型的唯一选择是将C*类型从timestamp更改为bigint,这很糟糕。 有什么想法可以帮我解决这个问题吗
共 (0) 个答案