Cassandra查询列映射

时间:2017-01-04 07:03:17

标签: apache-spark cassandra apache-spark-sql cassandra-2.0 spark-cassandra-connector

我有一个Cassandra表trans_by_date,其中包含列源tran_date(以及其他一些列)。我尝试运行以下代码获取错误:

java.util.NoSuchElementException: Columns not found in table trans.trans_by_date : TRAN_DATE.  The column does exist. 

任何语法问题?

JavaRDD<TransByDate> transDateRDD = javaFunctions(sc)
.cassandraTable("trans", "trans_by_date", CassandraJavaUtil.mapRowTo(TransByDate.class))
.select(CassandraJavaUtil.column("origin"), CassandraJavaUtil.column("TRAN_DATE").as("transdate"));


 public static class TransByDate implements Serializable {
        private String origin;
        private Date transdate;

    public String getOrigin() { return origin; }
        public void setOrigin(String id) { this.origin = id; }

        public Date getTransdate() { return transdate; }
        public void setTransdate(Date trans_date) { this.transdate = trans_date; }
}

由于

1 个答案:

答案 0 :(得分:1)

如果将CassandraJavaUtil.column(“TRAN_DATE”)更改为CassandraJavaUtil.column(“tran_date”),即仅使用小写列名,则代码应该有效。

在创建选择查询时,似乎CassandraJavaUtil将列名称放在双引号中。

请参阅以下链接,了解cassandra中的大写和小写处理: https://docs.datastax.com/en/cql/3.3/cql/cql_reference/ucase-lcase_r.html