2017-05-27 3 views
0
insert into sys.new_table select id + (select max(id) from sys.Old_table),name from sys.Old_table; 

Dadurch können wir insert Daten von einer Tabelle zu einer anderen Tabelle in Oracle. Wie kann ich diese Abfrage in Cassandra schreiben?Wie in Cassandra Tabelle einfügen mit Auswahl aus einer anderen Tabelle in 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 

Wie kann ich insert Daten in new_table mit new_table.ID = Max(Old_table.ID)+Old_table.ID und anderen Daten als auf Old_tableCassandra mit? Ich kann die Einfügung mit der obigen Syntax in mysql tun.

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

Bitte mich vorschlagen, wenn dies mit Spark auch gelöst werden kann.

Antwort

0

Dies kann mit einem Spark-Cassandra-Stecker erfolgen.

Grundlegende Sache zu tun.

  1. Daten von oldTable abrufen.

  2. Erhalten Sie max id aus dem Datenrahmen

  3. neuen Datenrahmen mit alten Datenrahmen erstellen. Hinweis .withColumn sollte gleichen Spaltennamen id

Beispiel-Code mit scala hat:

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() 

Dies ist nur ein Beispiel-Code, wo sc SqlContext/HiveContext ist.

Basierend auf Ihren Daten Größe Sie .cache() auf oldTable .. usw.

die auf Ihrer Anforderung basiert ändern Code verwenden können.

Verwandte Themen