【问题标题】:java.util.NoSuchElementException: Column not found ID in table demo.usertable in Cassandra Sparkjava.util.NoSuchElementException:在 Cassandra Spark 的表 demo.usertable 中找不到列 ID
【发布时间】:2015-03-29 03:26:51
【问题描述】:

我正在尝试使用 Spark-cassandra-Connector 将 RDD[CassandraRow] 写入现有的 Cassandra 表。这是我的一段代码

val conf = new SparkConf().setAppName(getClass.getSimpleName)
            .setMaster("local[*]")
            .set("spark.cassandra.connection.host", host)
        val sc = new SparkContext("local[*]", keySpace, conf)
val rdd = sc.textFile("hdfs://hdfs-host:8020/Users.csv")
val columns = Array("ID", "FirstName", "LastName", "Email", "Country")
val types = Array("int", "string", "string", "string", "string")
val crdd=rdd.map(p => {
            var tokens = p.split(",")
            new CassandraRow(columns,tokens)
        })
val targetedColumns = SomeColumns.seqToSomeColumns(columns)
crdd.saveToCassandra(keySpace, tableName, targetedColumns,  WriteConf.fromSparkConf(conf))

当我运行这段代码时,我得到以下异常

Exception in thread "main" java.util.NoSuchElementException: Column not found ID in table demo.usertable

这是表的实际架构

CREATE TABLE usertable (
  id int,
  country text,
  email text,
  firstname text,
  lastname text,
  PRIMARY KEY ((id))
)

有什么建议吗? 谢谢

【问题讨论】:

    标签: scala cassandra apache-spark


    【解决方案1】:

    在 Cassandra 中,键空间、表和列名区分大小写。您是否尝试过调整代码以使用与表定义相同的大小写? (例如使用 'id' 而不是 'ID')。

    【讨论】:

    • 也有可能,您的共享引用“demo.usertabl”的错误消息,您是否将其指定为您的表格,或者是复制粘贴错误?
    • @AndyTolbert 先生,我有这个问题...我的 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);
    • 我的数据框架构是这样的根 |-- MODEL_FAMILY_ID: decimal(38,10) (nullable = true) |-- MODEL_FAMILY: string (nullable = true) |-- CREATE_DATE: timestamp (nullable = true) |-- LAST_UPDATE_DATE: 时间戳 (nullable = true) |-- MODEL_FAMILY_NAME: string (nullable = true)
    • @AndyTolbert 因此,在线程“main”java.util.NoSuchElementException 中插入 tabException 时:在表 sample_cbd.model_family_by_id 中找不到列:MODEL_FAMILY_ID、MODEL_FAMILY、CREATE_DATE、LAST_UPDATE_DATE、MODEL_FAMILY_NAME 在 com.datastax.spark .connector.SomeColumns.selectFrom(ColumnSelector.scala:44) 我收到错误如何解决这个问题???
    • 我们可以在数据帧上调用 saveToCassandra 吗?当我在我的代码中执行此操作时,它说的是未知方法 ....ofcouse 我添加了 import com.datastax.spark.connector._ 那么我还需要做什么?
    猜你喜欢
    • 2016-03-22
    • 2019-10-16
    • 2019-03-03
    • 2017-03-11
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多