java.util.nosuchelementexception:在表中找不到列

k97glaaz  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(556)

我的cassandra表列用小写,如下所示

  1. CREATE TABLE model_family_by_id(
  2. model_family_id int PRIMARY KEY,
  3. model_family text,
  4. create_date date,
  5. last_update_date date,
  6. model_family_name text
  7. );

我的Dataframe模式是这样的

  1. root
  2. |-- MODEL_FAMILY_ID: decimal(38,10) (nullable = true)
  3. |-- MODEL_FAMILY: string (nullable = true)
  4. |-- CREATE_DATE: timestamp (nullable = true)
  5. |-- LAST_UPDATE_DATE: timestamp (nullable = true)
  6. |-- MODEL_FAMILY_NAME: string (nullable = true)

所以,当插入到Cassandra我得到下面的错误

  1. 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
  2. at com.datastax.spark.connector.SomeColumns.selectFrom(ColumnSelector.scala:44)
ux6nzvsh

ux6nzvsh1#

如果我正确理解了源代码,spark连接器会将这些列用双引号括起来,这样它们就会区分大小写,并且与cql定义中的名称不匹配。
您需要更改Dataframe的模式-或者运行 withColumnRenamed 每一列,或使用它 selectalias 每一列。

相关问题