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
如何使用Cassandra
将数据与new_table.ID = Max(Old_table.ID)+Old_table.ID
和其他数据一起insert
new_table
Old_table
?我可以在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
解决,请向我提出建议。
这可以使用 spark-cassandra 连接器来完成。
基本要做的事情。
-
从旧表中获取数据。
-
从数据帧获取最大 ID
-
使用旧数据帧创建新数据帧。注意
.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。
根据您的数据大小,您可以在oldTable
..等上使用.cache()
。
根据您的要求修改代码。