2014-12-13 140 views
1

我使用卡桑德拉火花火花,我有含6列由,這樣分離的JavaRDD<Srring>與卡桑德拉SaveToCassandra

header: canal,action,time,tiemend,client 

我已經創建了一個表Mytable與6列:

CREATE TABLE IF NOT EXISTS ref_event_by_user_session (
    canal  TEXT, 
    action  TEXT, 
    time  timestamp, 
    timeend  timestamp, 
    Client  INT, 
    PRIMARY KEY(canal, action, time, timeend) 
); 

現在我想用javaFunctions().saveToCassandra, 將我的JavaRDD保存在我的卡桑德拉表中,但我不知道如何使用它。你能告訴我怎麼做嗎?

+0

下面是文檔:https://github.com/datastax/spark-cassandra-connector/blob/master/doc/7_java_api.md – maasg 2014-12-13 13:42:16

+0

謝謝你的幫助:) – 2014-12-17 11:13:49

+0

爲什麼人們投票拒絕這個問題?我看到這個問題的價值 – 2015-04-06 18:45:47

回答

2

我找到了解決方案。 如果它可以幫助別人:) 我只是創建一個Java類table2canal String, action String, time Date, timeend Date, Client String,

然後:

JavaRDD<Table2> table2 = session_7.map(new Function<Tuple2<KeyTable2, ValueTable2>, Table2>() { 
     @Override 
     public Table2 call(Tuple2<KeyTable2, ValueTable2> keyTable2ValueTable2Tuple2) throws Exception { 
      SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 
      Date startdate = formatter.parse(keyTable2ValueTable2Tuple2._1.time.replace("+",".")); 
      Date endtdate = formatter.parse(keyTable2ValueTable2Tuple2._1.endtime.replace("+",".")); 
      Table2 t = new Table2(keyTable2ValueTable2Tuple2._2.canal,keyTable2ValueTable2Tuple2._2.motif,startdate,endtdate,keyTable2ValueTable2Tuple2._1.client); 
      return t; 
     } 
    }); 

    javaFunctions(table2).writerBuilder("Schema", "Table", mapToRow(Table2.class)).saveToCassandra(); 

注意:您必須在即使型動物變量是公共的類中添加干將。