0
insert into sys.new_table select id + (select max(id) from sys.Old_table),name from sys.Old_table;  

这样我们就可以将insert数据从一个表转移到另一个表中Oracle。我怎样才能写这个查询Cassandra

Old_table
    ID,Case Number,Date
    8534426,HV210935,03/19/2012 12:00:00 PM
    8534427,HV210768,12/16/2011 04:30:00 AM

我如何才能将insert数据输入new_tablewithnew_table.ID = Max(Old_table.ID)+Old_table.ID和其他数据,如Old_tableusing Cassandra?我可以使用上述语法在mysql.

new_table
    ID,Case Number,Date
    8534428,HV210935,03/19/2012 12:00:00 PM
    8534429,HV210768,12/16/2011 04:30:00 AM

如果这也可以解决Spark,请建议我。

4

1 回答 1

0

这可以使用 spark-cassandra 连接器来完成。

基本要做的事。

  1. 从 oldTable 获取数据。

  2. 从数据框中获取最大 id

  3. 使用旧数据框创建新数据框。注意.withColumn应该有相同的列名id

使用 scala 的示例代码:

val oldTable = sc.read.formt("org.apache.spark.sql.cassandr")
                 .options(Map("keyspace"->"sys","table"->"Old_table"))
                 .load()

val maxId = oldTable.select(max("id")).collect()(0).getAs[Int](0)

val newTable = oldTable.withColumn("id",lit(maxId).plus(col("id")))

newTable.write.format("org.apache.spark.sql.cassandr")
        .options(Map("keyspace"->"sys","table"->"new_table"))
        .save()

这只是一个示例代码,其中 sc 是 SQLContext/HiveContext。

根据您的数据大小,您可以.cache()oldTable.. 等上使用。

根据您的要求修改代码。

于 2017-05-29T11:08:58.980 回答