gpt4 book ai didi

scala - 使用 spark cassandra 连接器更新 Cassandra 表

转载 作者:行者123 更新时间:2023-12-04 23:44:30 24 4
gpt4 key购买 nike

我在更新 key 空间中的表时遇到了 Scala 上的 spark cassandra 连接器问题

这是我的一段代码

val query = "UPDATE " + COLUMN_FAMILY_UNIQUE_TRAFFIC + DATA_SET_DEVICE +
" SET a= a + " + b + " WHERE x=" +
x + " AND y=" + y +
" AND z=" + x

println(query)

val KeySpace = new CassandraSQLContext(sparkContext)
KeySpace.setKeyspace(KEYSPACE)

hourUniqueKeySpace.sql(query)

当我执行这段代码时,我收到了这样的错误
Exception in thread "main" java.lang.RuntimeException: [1.1] failure: ``insert'' expected but identifier UPDATE found

知道为什么会这样吗?
我怎样才能解决这个问题?

最佳答案

带有 counter column 的表的更新通过 spark-cassandra-connector 是可行的。您将不得不使用 DataFrames 和 DataFrameWriter方法以“追加”模式保存(或 SaveMode .Append 如果您愿意)。查看代码 DataFrameWriter.scala .

例如,给定一个表:

cqlsh:test> SELECT * FROM name_counter ;

name | surname | count
---------+---------+-------
John | Smith | 100
Zhang | Wei | 1000
Angelos | Papas | 10

代码应如下所示:
val updateRdd = sc.parallelize(Seq(Row("John",    "Smith", 1L),
Row("Zhang", "Wei", 2L),
Row("Angelos", "Papas", 3L)))

val tblStruct = new StructType(
Array(StructField("name", StringType, nullable = false),
StructField("surname", StringType, nullable = false),
StructField("count", LongType, nullable = false)))

val updateDf = sqlContext.createDataFrame(updateRdd, tblStruct)

updateDf.write.format("org.apache.spark.sql.cassandra")
.options(Map("keyspace" -> "test", "table" -> "name_counter"))
.mode("append")
.save()

更新后:
 name    | surname | count
---------+---------+-------
John | Smith | 101
Zhang | Wei | 1002
Angelos | Papas | 13

通过隐式转换 RDD to a DataFrame,DataFrame 转换可以更简单。 : import sqlContext.implicits._并使用 .toDF() .

检查此玩具应用程序的完整代码:
https://github.com/kyrsideris/SparkUpdateCassandra/tree/master

由于版本在这里非常重要,因此上述内容适用于 Scala 2.11.7、Spark 1.5.1、spark-cassandra-connector 1.5.0-RC1-s_2.11、Cassandra 3.0.5。
DataFrameWriter 被指定为 @Experimental@since 1.4.0 .

关于scala - 使用 spark cassandra 连接器更新 Cassandra 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31844318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com