如何使用cassandra中的另一个表中的select来插入cassandra表?

时间:2017-05-27 07:13:19

标签: mysql apache-spark cassandra cassandra-2.0 cassandra-2.2

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

通过这种方式,我们可以insert OracleCassandra中的一个表到另一个表的数据。如何在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_table使用new_table.ID = Max(Old_table.ID)+Old_table.IDOld_table数据导入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中的上述语法进行插入。

index.html

如果可以使用<img src="images/image.jpg"> 解决此问题,请建议我。

1 个答案:

答案 0 :(得分:0)

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

要做的基本事情。

  1. 从oldTable获取数据。

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

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

  4. 使用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

    根据您的要求修改代码。