使用spark cassandra连接器为Scala批量插入

时间:2016-08-09 20:22:35

标签: datastax spark-cassandra-connector

我试图使用批处理语句将一些行插入cassandra。我无法找到有关如何使用datastax spark连接器的任何文档。我试过以下

CassandraConnector(conf).withSessionDo({ session =>
    val ps = session.prepare(s"BEGIN BATCH" + 
    "INSERT INTO test.user_trans (user_id, amount) VALUES(?, ?);" +
    "INSERT INTO standing (user_id, position) VALUES (?, ?);" + 
    "APPLY BATCH" );
  val bound = ps.bind(user_id, amount, user_id, position)
  session.execute(bound)
});

但是datastax驱动程序会出现以下错误

com.datastax.driver.core.exceptions.SyntaxError: line 1:6 mismatched input 'BATCHINSERT' expecting K_BATCH (BEGIN [BATCHINSERT] INTO...)

是否可以使用datastax soark连接器驱动程序进行原子批量更新?

我正在使用spark-cassandra-connector版本1.6.0-s_2.10 和火花1.6.1

关于RDD的所有其他操作以及将单行保存到Cassandra的工作

1 个答案:

答案 0 :(得分:0)

因为您忘记在BEGIN BATCH

之后添加空格

val ps = session.prepare(s"BEGIN BATCH " + // Put a space after BEGIN BATCH "INSERT INTO test.user_trans (user_id, amount) VALUES(?, ?);" + "INSERT INTO standing (user_id, position) VALUES (?, ?);" + "APPLY BATCH" );