【问题标题】:java.util.NoSuchElementException: Columns not found in tablejava.util.NoSuchElementException:表中未找到列
【发布时间】:2019-03-03 16:49:55
【问题描述】:

我的 cassandra 表列小写如下

CREATE TABLE model_family_by_id(
  model_family_id int PRIMARY KEY,
  model_family text,
  create_date   date,
  last_update_date date,
  model_family_name text
);

我的数据框架构是这样的

     root
               |-- MODEL_FAMILY_ID: decimal(38,10) (nullable = true)
               |-- MODEL_FAMILY: string (nullable = true)
               |-- CREATE_DATE: timestamp (nullable = true)
               |-- LAST_UPDATE_DATE: timestamp (nullable = true)
               |-- MODEL_FAMILY_NAME: string (nullable = true)

所以在插入 cassandra 时,我遇到了错误

tabException in thread "main" java.util.NoSuchElementException: Columns not found in table sample_cbd.model_family_by_id: MODEL_FAMILY_ID, MODEL_FAMILY, CREATE_DATE, LAST_UPDATE_DATE, MODEL_FAMILY_NAME
    at com.datastax.spark.connector.SomeColumns.selectFrom(ColumnSelector.scala:44)

【问题讨论】:

    标签: cassandra apache-spark-sql datastax cassandra-3.0 spark-cassandra-connector


    【解决方案1】:

    如果我正确理解 the source code,Spark 连接器会将列括在双引号中,因此它们区分大小写,并且与 CQL 定义中的名称不匹配。

    您需要更改 DataFrame 的架构 - 对每一列运行 withColumnRenamed,或者对每一列使用 selectalias

    【讨论】:

    • 先生,非常感谢。先生,在现实世界的项目中,我是否需要在 scala/spark 中遵循任何程序,例如 Entity POJO 之类的东西,如果需要,该怎么做?
    猜你喜欢
    • 2019-10-16
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    相关资源
    最近更新 更多