使用 Spark SQL 的 Cassandra 简单插入语句因 org.apache.spark.sql.catalyst.parser.ParseException 而失败

Posted

技术标签:

【中文标题】使用 Spark SQL 的 Cassandra 简单插入语句因 org.apache.spark.sql.catalyst.parser.ParseException 而失败【英文标题】:Cassandra Simple Insert Statement using Spark SQL Fails with org.apache.spark.sql.catalyst.parser.ParseException 【发布时间】:2017-05-13 20:24:39 【问题描述】:

我正在尝试使用 Spark SQL 将数据插入 Cassandra 表,如下所示:

String query = "CREATE TEMPORARY TABLE my_table USING org.apache.spark.sql.cassandra OPTIONS (table \"my_table\",keyspace \"my_keyspace\", pushdown \"true\")";
                spark.sparkSession.sql(query);
                spark.sparkSession
                                .sql("INSERT INTO my_keyspace.my_table (column0, column1) VALUES ('value0', 'value1');

但是,它失败并出现以下异常: E

xception in thread "main" org.apache.spark.sql.catalyst.parser.ParseException:
mismatched input 'column0' expecting '(', 'SELECT', 'FROM', 'VALUES', 'TABLE', 'INSERT', 'MAP', 'REDUCE'(line 1, pos 33)

我在没有列名的情况下尝试了它并且它有效。 我的意思是为某些列插入数据,而不是全部。

【问题讨论】:

【参考方案1】:

Spark SQL 不使用与 CQL 相同的语法,它们是不同的语言。查看 HiveQL 参考以获取更多信息。

一个警告,通过 SparkSql 进行单行插入会很慢。它适用于大型多记录(数百万)插入。

【讨论】:

谢谢拉斯。我使用了 HiveQL 格式并且能够插入到表中。但是,我仍然有一个问题:如果一个表有 4 列,而我只需要将数据插入其中的三个(包括键),我该怎么做?目前出现如下错误:Cannot insert into table unknown because the number of columns are different: need 4 columns, but query has 3 columns 你必须插入一个行结构我相信,SparkSQL 真的不适合做这种单独的插入...... 撇开评论,Cassandra CQL 是我的一个不错的选择;其中需要插入\更新各个行。不过需要深入了解@Cassandra batch 我不确定你在说什么,cql 可以提供批处理... Spark SQL 用于处理已经存在于另一个分布式系统(如 hdfs 或 Cassandra 或其他数据库)中的数据。 是的。我知道。我想说的是,对于单个插入,您可以直接使用 Cassandra CQL 驱动程序。但是,如果您使用 CQL,并且有时需要插入大量数据,那么您可以考虑批量学习。

以上是关于使用 Spark SQL 的 Cassandra 简单插入语句因 org.apache.spark.sql.catalyst.parser.ParseException 而失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spark SQL 的 Cassandra 简单插入语句因 org.apache.spark.sql.catalyst.parser.ParseException 而失败

将 Spark SQL Hive 服务器连接到 Cassandra?

使用 Spark SQL 在 cassandra 中加入两个表 - 错误:缺少 EOF

用于 Cassandra 的 Spark2 会话,sql 查询

无法导入 org.apache.spark.sql.cassandra.CassandraSQLContext

14.4 Spark-SQL基于Cassandra数据分析编程实例