With raw thrift APIs:

1. Fetch column from supercolumn:

ColumnPath cp = new ColumnPath("ColumnFamily");
cp.setSuper_column("SuperColumnName");
cp.setColumn("ColumnName");
ColumnOrSuperColumn resp = client.get(getByteBuffer("RowKey"), cp,
ConsistencyLevel.ONE);
Column c = resp.getColumn();

2. Add a new supercolumn:

    SuperColumn superColumn = new SuperColumn();
    superColumn.setName(getBytes("SuperColumnName"));
    cols = new ArrayList<Column>();
    Column c = new Column();
    c.setName(name);
    c.setValue(value);
    c.setTimestamp(timeStamp);
    cols.add(c);
    //repeat above 5 lines for as many cols you want in supercolumn
    superColumn.setColumns(cols);


    List<Mutation> mutations = new ArrayList<Mutation>();
    ColumnOrSuperColumn csc = new ColumnOrSuperColumn();
    csc.setSuper_column(superColumn);
    csc.setSuper_columnIsSet(true);
    Mutation m = new Mutation();
    m.setColumn_or_supercolumn(csc);
    m.setColumn_or_supercolumnIsSet(true);
    mutations.add(m);


    Map<String, List<Mutation>> allMutations = new HashMap<String,
List<Mutation>>();
    allMutations.put("ColumnFamilyName", mutations);
    Map<ByteBuffer, Map<String, List<Mutation>>> mutationMap = new
HashMap<ByteBuffer, Map<String, List<Mutation>>>();
    mutationMap.put(getByteBuffer("RowKey"), mutations);
    client.batch_mutate(mutationMap, ConsistencyLevel.ONE);

HTH!

Thanks,
Naren



On Thu, Jan 6, 2011 at 10:42 PM, Arijit Mukherjee <ariji...@gmail.com>wrote:

> Thank you. And is it similar if I want to search a subcolumn within a
> given supercolumn? I mean I have the supercolumn key and the subcolumn
> key - can I fetch the particular subcolumn?
>
> Can you share a small piece of example code for both?
>
> I'm still new into this and trying to figure out the Thrift APIs. I
> attempted to use Hector, but got myself into more confusion.
>
> Arijit
>
> On 7 January 2011 11:44, Roshan Dawrani <roshandawr...@gmail.com> wrote:
> >
> > On Fri, Jan 7, 2011 at 11:39 AM, Arijit Mukherjee <ariji...@gmail.com>
> wrote:
> >>
> >> Hi
> >>
> >> I've a quick question about supercolumns.
> >> EventRecord = {
> >>    eventKey2: {
> >>        e2-ts1: {set of columns},
> >>        e2-ts2: {set of columns},
> >>        ...
> >>        e2-tsn: {set of columns}
> >>    }
> >>    ....
> >> }
> >>
> >> If I want to append another "e2-tsp: {set of columns}" to the event
> >> record keyed by eventKey2, do I need to retrieve the entire eventKey2
> >> map, and then append this new row and re-insert eventKey2?
> >
> > No, you can simply insert a new super column with its sub-columns with
> the rowKey that you want, and it will join the other super columns of that
> row.
> >
> > A row have billions of super columns. Imagine fetching them all, just to
> add one more super column into it.
> >
> >
> >
> >
> >
>
>
> --
> "And when the night is cloudy,
> There is still a light that shines on me,
> Shine on until tomorrow, let it be."
>

Reply via email to