【问题标题】:Cassandra Query column mappingCassandra 查询列映射
【发布时间】:2017-05-18 09:38:15
【问题描述】:

我有一个 Cassandra 表 trans_by_date,其中包含列 origin、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; }
}

谢谢

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 设置为小写可以解决这个问题。然后出现了新问题:Failed to map constructor parameter id in class spark.SparkTest$TransByDate to a column of trans.trans_by_date Failed to map constructor parameter tran_date in class spark.SparkTest$TransByDate to a column of trans.trans_by_date 所以我将两个方法变量名称都更改了 - id 到 origin, tran_date 到 trandate - 以匹配类变量名称。好吧,如果这是唯一可行的方法。
    • @Sam-T 对不起,但我认为添加原始问题的答案不是本论坛的工作方式。现在没有其他人理解这个问题,答案不再匹配。我建议恢复您所做的更改并将信息作为附加评论添加到我的答案中。
    • @Sam-T 感谢您恢复对问题的更改。我无法重现您遇到的第二个问题,即 Failed to map constructor parameter 消息。也许这取决于 spark-cassandra-connector 的版本(我使用 1.6 版)。由于原始问题已由我的答案解决,您能否将答案标记为正确?然后其他用户知道问题已解决。
    • 完成,我正在使用 Cassandra 2.2.8
    猜你喜欢
    • 2011-06-08
    • 1970-01-01
    • 2010-10-08
    • 2019-02-19
    • 2016-10-02
    • 1970-01-01
    • 2015-05-04
    • 2017-10-16
    • 1970-01-01
    相关资源
    最近更新 更多