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

これにより、insertのデータをOracleの1つのテーブルから別のテーブルに転送することができます。 Cassandraにこのクエリを書くにはどうすればいいですか? Old_tableのようnew_table.ID = Max(Old_table.ID)+Old_table.IDや他のデータとnew_tableに私insertデータはCassandraを使用するにはどうすればよいcassandraの別のテーブルから選択して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 

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を使用して解決することができるなら、私を示唆して行います。

答えて

0

これは、spark-cassandraコネクタを使用して行うことができます。

基本的なこと。

  1. oldTableからデータを取得します。

  2. は、古いデータフレームを使用して新しいデータフレームを作成してデータフレーム

  3. から最大IDを取得します。これはSCはSQLContext/HiveContextあるだけのコード例である

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

    :注.withColumnは、同じ列名をid

例コード使用してスカラを有するべきです。あなたはoldTable.cache()を使用することができ、あなたのデータサイズに基づいて

...など

あなたの条件に基づいてコードを変更します。

関連する問題