有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案