hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matteo Bertozzi (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-16935) Java API method Admin.deleteColumn(table, columnFamily) doesn't delete family's StoreFile from file system.
Date Fri, 18 Nov 2016 19:02:59 GMT

    [ https://issues.apache.org/jira/browse/HBASE-16935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15677463#comment-15677463
] 

Matteo Bertozzi commented on HBASE-16935:
-----------------------------------------

from the code we actually remove the family dirs in both cases (table enabled or disabled).
but since we reopen the regions after deleting the family folders we end up with the flushed
on-close file in the deleted family.
so, all the files in the family except the flush on-close one will be removed.

basically the simplified order of operation we have (since 0.94 or even before) is:
 - change the htd
 - drop the family folder
 - re-open regions (close region will trigger a flush of the family)

we should probably flip the order, so we reopen with the new htd and then we remove the dirs.

> Java API method Admin.deleteColumn(table, columnFamily) doesn't delete family's StoreFile
from file system.
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-16935
>                 URL: https://issues.apache.org/jira/browse/HBASE-16935
>             Project: HBase
>          Issue Type: New Feature
>          Components: Admin
>    Affects Versions: 1.2.3
>            Reporter: Mikhail Zvagelsky
>         Attachments: Selection_008.png
>
>
> The method deleteColumn(TableName tableName, byte[] columnName) of the class org.apache.hadoop.hbase.client.Admin
shoud delete specified column family from specified table. (Despite of its name the method
removes the family, not a column - view the [issue| https://issues.apache.org/jira/browse/HBASE-1989].)
> This method changes the table's schema, but it doesn't delete column family's Store File
from a file system. To be precise - I run this code:
> {code:|borderStyle=solid}
> import java.io.IOException;
> import org.apache.hadoop.conf.Configuration;
> import org.apache.hadoop.hbase.HBaseConfiguration;
> import org.apache.hadoop.hbase.HColumnDescriptor;
> import org.apache.hadoop.hbase.HTableDescriptor;
> import org.apache.hadoop.hbase.TableName;
> import org.apache.hadoop.hbase.client.*;
> import org.apache.hadoop.hbase.util.Bytes;
> public class ToHBaseIssueTracker {
>     public static void main(String[] args) throws IOException {
>         TableName tableName = TableName.valueOf("test_table");
>         HTableDescriptor desc = new HTableDescriptor(tableName);
>         desc.addFamily(new HColumnDescriptor("cf1"));
>         desc.addFamily(new HColumnDescriptor("cf2"));
>         Configuration conf = HBaseConfiguration.create();
>         Connection connection = ConnectionFactory.createConnection(conf);
>         Admin admin = connection.getAdmin();
>         admin.createTable(desc);
>         HTable table = new HTable(conf, "test_table");
>         for (int i = 0; i < 4; i++) {
>             Put put = new Put(Bytes.toBytes(i)); // Use i as row key.
>             put.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("a"), Bytes.toBytes("value"));
>             put.addColumn(Bytes.toBytes("cf2"), Bytes.toBytes("a"), Bytes.toBytes("value"));
>             table.put(put);
>         }
>         admin.deleteColumn(tableName, Bytes.toBytes("cf2"));
>         admin.majorCompact(tableName);
>         admin.close();
>     }
> }
> {code}
> Then I see that the store file for the "cf2" family persists in file system.
> I observe this effect in standalone hbase installation and in pseudo-distributed mode.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message