2014-12-13 100 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(); 

注意:您必须在即使型动物变量是公共的类中添加干将。