Using Cassandra.Client works. However more questions arise, specifically
regarding Super Columns, while the following code persist the super column
"sc1"with 3 simple columns. How do I create nested super columns? A super
column with multiple super columns and standard columns? Thanks, Ivan
// Super Column
batch_mutation_super_t bt = new batch_mutation_super_t();
bt.key = "testkey";
bt.table = tablename_;
bt.cfmap = new HashMap<String,List<superColumn_t>>();
List<superColumn_t> superColumn_arr = new
ArrayList<superColumn_t>();
List<column_t> column_arr2 = new ArrayList<column_t>();
column_arr2.add(new column_t("c1", "v1".getBytes(), now));
column_arr2.add(new column_t("c2", "v2".getBytes(), now));
column_arr2.add(new column_t("c3", "v3".getBytes(), now));
superColumn_arr.add(new superColumn_t("sc1", column_arr2));
bt.cfmap.put("Super1", superColumn_arr);
peerstorageClient.batch_insert_superColumn(bt, false);
On Wed, Jun 17, 2009 at 5:01 PM, Jonathan Ellis <[email protected]> wrote:
> You're using internal APIs. Don't do that unless you know what you're
> doing. :)
>
> The client API is in Cassandra.Client.
>
> We have some sample code here:
> http://wiki.apache.org/cassandra/ClientExamples
>
> (although none in Java yet, it should still be pretty clear.)
>
> -Jonathan
>
> On Wed, Jun 17, 2009 at 3:54 PM, Ivan Chang<[email protected]> wrote:
> > I tried to insert and retrieve data from a standalone Java program.
> While I
> > am able to insert and retrieve the correct data from within the Java
> > session. After I terminate the session, and rerun only the data
> retrieval
> > part, the previous inserted data does not exist anymore, throwing a null
> > exception. Here's the code:
> >
> > // Get storage-config file location
> >
> >
> System.out.println("storage-config="+DatabaseDescriptor.getConfigFileName());
> >
> > // Insert some data with key "partner1"
> > RowMutation rm = new RowMutation("Table1", "partner1");
> > ColumnFamily cf = new ColumnFamily("Standard1", "Standard");
> > long now = Calendar.getInstance().getTimeInMillis();
> > System.out.println(now);
> > cf.addColumn("firstname", "John1".getBytes(), now);
> > cf.addColumn("lastname", "Doe1".getBytes(), now);
> > rm.add(cf);
> > try {
> > rm.apply();
> > } catch (Exception e) {
> > }
> >
> > // Retrieve data for key "partner1"
> > Table table = Table.open("Table1");
> >
> > try {
> > Row result = table.getRow("partner1", "Standard1");
> > System.out.println(result.toString());
> > ColumnFamily cres = result.getColumnFamily("Standard1");
> > Map cols = cres.getColumns();
> > System.out.println(cols.size());
> > Set c = cols.keySet();
> > Iterator it = c.iterator();
> > while (it.hasNext()) {
> > String cn = (String) it.next();
> > System.out.println(cn);
> > System.out.println(new
> String(cres.getColumn(cn).value()));
> > }
> > } catch (Exception e) {
> > System.out.println("Ex: " + e.getMessage());
> > }
> >
> > the print out from above is
> >
> > storage-config=~/Cassandra/trunk/conf/storage-conf.xml
> > 1245270260114
> > Row(partner1 [ColumnFamily(Standard1 [firstname:false:5...@1245270260114,
> > lastname:false:4...@1245270260114]))]
> > 2
> > lastname
> > Doe1
> > firstname
> > John1
> >
> > However, when I commented out the insert part of the above code and try
> > retrieve data again by rerunning the main code, I got an exception:
> >
> > Row(partner1 [)]
> > Ex: null
> >
> > So the data doesn't seem to persist across sessions.
> >
> > Could someone explain what's wrong with the code?
> >
> > Thanks,
> > Ivan
> >
>