This can also be done with a row-doesn't-fit-into-memory constraint. You
won't need to hold the second column in-memory if your iterator tree deep
copies, filters, transforms and merges. Exhibit A:

[HeapIterator-derivative]
   |_________________________
   |                         \
[transform-graph1-to-graph2]  \
   |                           \
[column-family-graph1]     [all-but-column-family-graph1]

With this design, you can subclass the HeapIterator, deep copy the source
in the init method, wrap one in a custom transform iterator, and create a
appropriate seek method. This is probably more on the advanced side of
Accumulo programming, but can be done.

Adam


On Tue, May 26, 2015 at 8:59 AM, Eric Newton <eric.new...@gmail.com> wrote:

> Short answer: no.
>
> Long answer: maybe.
>
> You can write an iterator which will transform:
>
> row, cf1, cq, vis -> value
>
> into:
>
> row, cf2, cq, vis -> value
>
> And if you can do this while maintaining sort order, you can get your new
> ColumnFamily transformed during scans and compactions.
>
> But this bit about maintaining the sort order is more complex than it
> sounds.
>
> If you have the following:
>
> row, a, cq, vis -> value
> row, aa, cq, vis -> value
>
>
> And you want to transform cf "a" into cf "b":
>
> row, aa, cq, vis -> value
> row, b, cq, vis -> value
>
>
> Your iterator needs to hold the second column in memory, after
> transforming the first column.  Tablet server memory for holding Key/Values
> is not infinite.
>
> -Eric
>
> On Tue, May 26, 2015 at 8:44 AM, shweta.agrawal <shweta.agra...@orkash.com
> > wrote:
>
>> Hi,
>>
>> I want to ask, is it possible in accumulo to change the column family
>> without changing the whole data.
>>
>> Suppose my column family is graph1, now i want to rename this column
>> family as graph2.
>> Is it possible?
>>
>> Thanks
>> Shweta
>>
>
>

Reply via email to