Apache spark 使用Spark SQL的Cassandra Simple Insert语句因org.apache.Spark.SQL.catalyst.parser.ParseException失败
我尝试使用Spark SQL将数据插入Cassandra表,如下所示:Apache spark 使用Spark SQL的Cassandra Simple Insert语句因org.apache.Spark.SQL.catalyst.parser.ParseException失败,apache-spark,cassandra,apache-spark-sql,Apache Spark,Cassandra,Apache Spark Sql,我尝试使用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);
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
我在没有列名的情况下尝试了它,它成功了。
这里我的重点是为某些列插入数据,而不是全部列。Spark SQL与CQL使用的语法不同,它们是不同的语言。有关更多信息,请查看HiveQL引用
一个警告是,通过SparkSql执行单行插入将非常缓慢。它是为大型多记录数百万次插入而设计的。谢谢Russ。我使用了HiveQL格式,能够插入到表中。但是,我仍然有一个问题:如果一个表有4列,而我只需要在其中的3列中插入数据(包括键),我该怎么做?目前出现以下错误:无法插入表未知,因为列数不同:需要4列,但查询有3列您必须插入行结构我相信SparkSQL确实不适合进行这种单独的插入…除了注释之外,Cassandra CQL是我的一个很好的选择;其中需要插入\更新单个行。不过,您需要深入了解@Cassandra Batch我不确定您在说什么,批次可从cql获得。。。Spark SQL用于处理其他分布式系统(如hdfs、Cassandra或其他数据库)中的数据。是的。。我知道。我想说的是,对于单个插入,您可以直接使用Cassandra CQL驱动程序。但是,如果你使用CQL,有时需要插入大量的数据集,那么你可以考虑学习批处理。
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)