精华内容
下载资源
问答
  • In HBase, calling DeleteColumn() method i.e., essentially a schema change to a column family or deleting column families will result in downtime of HBase Cluster?解决方案The deleteColumn method on a ...

    In HBase, calling DeleteColumn() method i.e., essentially a schema change to a column family or deleting column families will result in downtime of HBase Cluster?

    解决方案

    The deleteColumn method on a Delete mutation of HBase deletes specific column(s) from a specific row this is not a schema change since HBase does not retain a schema-level knowledge of columns of each row (and each row can have a different number and types of columns - think about it as a thinly populated matrix). The same is true for deleteFamily on this object.

    There won't be a cluster downtime for this (and HBase will not actually delete the data until the next major compaction of the region)

    If you want to drop a column family from the whole table you can do that via HBaseAdmin with the not so aptly named deleteColumn method (or the shell with alter 'table_name', {NAME => 'family_name', METHOD => 'delete'}) - in this case the table needs to be disabled first so while HBase won't suffer a downtime, the specific table will

    展开全文
  • Hbase 删除一列

    2018-02-07 10:47:03
    删除Hbase中某个表的一列值 命令 java -jar deleteOneColumn.jar(这个文件的路径) '表名' '列簇名' '列名'
  • Hbase删除指定

    2020-07-18 20:41:35
    注意:先禁用要删除列族所在的表 disable '表名' alter '表名', {NAME => '族名', METHOD => 'delete'}

    注意:先禁用要删除列族所在的表

    disable '表名'
    alter '表名', {NAME => '列族名', METHOD => 'delete'}
    
    展开全文
  • hbase删除某个的数据

    千次阅读 2018-11-04 16:48:00
    碰到这样个事:我们往hbase里面导数据, 补了快一年的数据了,结果发现某个的数据有几个月是有问题的,不能用,所以需要将这个的有问题的几个月数据全部干掉, 查了hbase的命令,发现没有这种根据rowkey范围直接...

      碰到这样一个事:我们往hbase里面导数据, 补了快一年的数据了,结果发现某个列的数据有几个月是有问题的,不能用,所以需要将这个列的有问题的几个月数据全部干掉, 查了hbase的命令,发现没有这种根据rowkey范围直接删除某个列的命令. 所以只能自己写了: 可以采用客户端编程的方式,也可以采用hbase on mr的方式,我这里采用的是hbase on mr的方式。原因是如果采用客户端编程的方式,需要scan所有的主键,然后判断rowkey是否符合删除的要求,如果符合则删除,因为数据量很大,这种方式可能太慢,其次是怕把客户端直接给弄死了。采用mr分布式的做法就不用担心这方面的问题。 

        注:

        1. hbase的版本是: HBase 0.98.9

        2. rowkey的形式是  userid+yyyyMMdd的形式, 比如: 0000120181103, 这里需要把20180406之前的数据的某个列( f:cl )干掉,代码如下:

      

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.Delete;
    import org.apache.hadoop.hbase.client.Result;
    import org.apache.hadoop.hbase.client.Scan;
    import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
    import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
    import org.apache.hadoop.hbase.mapreduce.TableMapper;
    import org.apache.hadoop.hbase.mapreduce.TableReducer;
    import org.apache.hadoop.hbase.util.Bytes;
    import org.apache.hadoop.io.NullWritable;
    import org.apache.hadoop.io.Text;
    import org.apache.hadoop.mapreduce.Job;
    import org.apache.hadoop.util.GenericOptionsParser;
    
    import java.io.IOException;
    
    public class HbaseDelColMr {
    
        static class DelColMapper extends TableMapper<Text, NullWritable> {
    
            private Text dekKey = new Text();
    
            // key: rowkey
            // result: 一行的数据
            @Override
            public void map(ImmutableBytesWritable key, Result result, Context context) throws IOException, InterruptedException {
    
                //拿到 rowkey
                String rowkey = Bytes.toString(key.get());
    
                // 判断 rowkey 是否需要删除 rowkey的类型类似这种字符串 12556565620180405
                String dateStr = rowkey.substring(rowkey.length() - 8, rowkey.length());
    
                //如果在20180406之前的数据全部需要删掉
                if (Integer.parseInt(dateStr) < 20180406) {
                    dekKey.set(rowkey);
                    context.write(dekKey, NullWritable.get());
                }
            }
        }
    
        static class DelColReducer extends TableReducer<Text, NullWritable, ImmutableBytesWritable> {
            @Override
            public void reduce(Text delKey, Iterable<NullWritable> values, Context context) throws IOException, InterruptedException {
                // delKey 这就是要删除的rowkey
                Delete delete = new Delete(Bytes.toBytes(delKey.toString()));
    
                //设置要删除的列
                delete.deleteColumn(Bytes.toBytes("f"), Bytes.toBytes("cl"));
                context.write(new ImmutableBytesWritable(Bytes.toBytes(delKey.toString())), delete);
            }
        }
    
        public static void main(String[] args) throws Exception {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "zk_1,zk_2,zk_3,zk_4,zk_5");
            configuration.set("hbase.zookeeper.property.clientPort", "2181");
            //configuration.set("hbase.local.dir", "/tmp/hbase-local-dir_test");
    
            String[] otherArgs = new GenericOptionsParser(configuration, args).getRemainingArgs();
    
            for (String ar:otherArgs) {
                System.out.println(ar+" ======================================");
            }
    
            Job job = Job.getInstance(configuration);
            job.setJobName("HbaseDelColMr");
            job.setJarByClass(HbaseDelColMr.class);
    
            Scan scan = new Scan();
            scan.addColumn(Bytes.toBytes("f"), Bytes.toBytes("cl"));
            scan.setCaching(500);
            scan.setCacheBlocks(false);
    
            TableMapReduceUtil.initTableMapperJob(
                    otherArgs[0], //输入表 "dt_list_detail_test"
                    scan, // scan 对象
                    DelColMapper.class,
                    Text.class, //mapper输出的key类型
                    NullWritable.class, //mapper输出的value类型
                    job
            );
    
            TableMapReduceUtil.initTableReducerJob(
                    otherArgs[0],// 输出表 "dt_list_detail_test"
                    DelColReducer.class,
                    job);
    
            job.setNumReduceTasks(10);
    
            boolean b = job.waitForCompletion(true);
    
            if (!b) {
                throw new IOException("任务出错.....");
            }
        }
    }
    

      还有一种效率更高更加简便的方式, 就是去掉reduce阶段, 如下:

    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.Delete;
    import org.apache.hadoop.hbase.client.Result;
    import org.apache.hadoop.hbase.client.Scan;
    import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
    import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;
    import org.apache.hadoop.hbase.mapreduce.TableMapper;
    import org.apache.hadoop.hbase.util.Bytes;
    import org.apache.hadoop.mapreduce.Job;
    import org.apache.hadoop.util.GenericOptionsParser;
    
    import java.io.IOException;
    
    public class HbaseDelColMr2 {
    
        static class DelColMapper extends TableMapper<ImmutableBytesWritable, Delete> {
            @Override
            public void map(ImmutableBytesWritable key, Result result, Context context) throws IOException, InterruptedException {
    
                String rowkey = Bytes.toString(key.get()); //拿到 rowkey
    
                // 判断 rowkey 是否需要删除 rowkey的类型类似这种字符串 12556565620180405
                String dateStr = rowkey.substring(rowkey.length() - 8, rowkey.length());
    
                //如果在20180406之前的数据全部需要删掉
                if (Integer.parseInt(dateStr) < 20180406) {
                    //设置要删除的列
                    Delete delete = new Delete(Bytes.toBytes(rowkey));
                    delete.deleteColumn(Bytes.toBytes("f"), Bytes.toBytes("cl"));
                    context.write(key, delete);  //需要测试如果没有reduce阶段,这里是否会直接写入到hbase, 补充:结论是可以的
                }
            }
        }
    
        public static void main(String[] args) throws Exception {
            Configuration configuration = HBaseConfiguration.create();
            configuration.set("hbase.zookeeper.quorum", "zk_1,zk_2,zk_3,zk_4,zk_5");
            configuration.set("hbase.zookeeper.property.clientPort", "2181");
            //configuration.set("hbase.local.dir", "/tmp/hbase-local-dir_test");
    
            String[] otherArgs = new GenericOptionsParser(configuration, args).getRemainingArgs();
    
            for (String ar:otherArgs) {
                System.out.println(ar+" ======================================");
            }
    
            Job job = Job.getInstance(configuration);
            job.setJobName("HbaseDelColMr2");
            job.setJarByClass(HbaseDelColMr2.class);
    
            Scan scan = new Scan();
            scan.addColumn(Bytes.toBytes("f"), Bytes.toBytes("cl"));
            scan.setCaching(500);
            scan.setCacheBlocks(false);
    
            TableMapReduceUtil.initTableMapperJob(
                    otherArgs[0], //输入表 "dt_list_detail_test"
                    scan, // scan 对象
                    DelColMapper.class,
                    null, //没有输出,直接写入hbase
                    null, //没有输出,直接写入hbase
                    job
            );
    
            TableMapReduceUtil.initTableReducerJob(
                    otherArgs[0],// 输出表 "dt_list_detail_test"
                    null,
                    job);
    
            job.setNumReduceTasks(0);
    
            boolean b = job.waitForCompletion(true);
    
            if (!b) {
                throw new IOException("任务出错.....");
            }
        }
    }
    

      打包调用: 

     export HADOOP_CLASSPATH=`hbase classpath`

    yarn jar ./hbaseDeltest.jar xxx.HbaseDelColMr -D mapreduce.job.queuename=xxx dt_list_detail_test

     
    这样子就可以啦,上面两种方式随便选一种就ok了。。。。。。

    转载于:https://www.cnblogs.com/wuxilc/p/9904572.html

    展开全文
  • Hbase 删除

    万次阅读 2016-04-13 14:02:55
    hbase shell中运行: alter 'member', {NAME => 'address', METHOD => 'delete'} 报错 ERROR: org.apache.hadoop.hbase.TableNotDisabledException: org.apache.hadoop.hbase.TableNotDisabledException: member
    hbase shell中运行:
    

    alter 'member', {NAME => 'address', METHOD => 'delete'}

    报错
    ERROR: org.apache.hadoop.hbase.TableNotDisabledException: org.apache.hadoop.hbase.TableNotDisabledException: member
            at org.apache.hadoop.hbase.master.HMaster.checkTableModifiable(HMaster.java:1488)
            at org.apache.hadoop.hbase.master.handler.TableEventHandler.(TableEventHandler.java:72)
            at org.apache.hadoop.hbase.master.handler.TableDeleteFamilyHandler.(TableDeleteFamilyHandler.java:41)
            at org.apache.hadoop.hbase.master.HMaster.deleteColumn(HMaster.java:1393)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Server.call(WritableRpcEngine.java:320)
            at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1426)


    需要先disable
    disable 'member'

    之后再删除列族就好了。

    describe 'member'

    enable 'member'
    展开全文
  • Hbase 删除列

    千次阅读 2016-11-03 14:23:25
    删除列族 使用alter,也可以删除列族。下面给出的是使用alter删除列族...下面给出的是个例子,从“emp”表中删除列族。 假设在HBase中有个employee表。它包含以下数据: hbase(main):006:0> scan '...
  • HBase删除

    千次阅读 2017-02-13 10:38:40
    HTable除了提供删除方法delete()外,还有个与之对应的类Delete,用户可以通过多种方法限定要删除HBase的Delete操作可以指定删除某个簇或某个,或者指定某个时间戳,删除比这个时间早的数据。 ...
  • HBase删除数据

    2018-08-06 14:09:00
    删除一的指定版本 删除一的所用版本 删除指定族的所有 hbase删除数据,并不是马上删掉,只是对数据打一个删除标记,真正删除数据是等到下一次major_compact(除非KEEP_DELETED_CELLS=true)。当...
  • 删除Hbase指定数据

    千次阅读 2019-01-08 20:56:53
    Hbase没有删除数据的直接命令,通过指定表名,簇,列名 package com.cslc.asiancup.dfstohbase; import com.cslc.asiancup.utils.HbaseUtil; import com.cslc.asiancup.utils.HbaseUtilJava; import org....
  • 使用 HBase 并不困难,但是如何用好 HBase,这确是个难点。为了合理地使用 HBase,尽可能发挥 HBase 的功能,我们需要根据不同的场景对 HBase 进行不同地优化以最大程度上提升系统的性能。本文重点介绍族设计...
  • hbase删除数据

    2019-05-30 19:56:14
    hbase删除数据 package com.test.demo01; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase....
  • HBase删除数据的原理

    千次阅读 2019-07-21 10:44:59
    当执行删除操作时,HBase 新插入条相同的 KeyValue 数据,但是使 keytype=Delete,这便意味着数据被删除了,直到发生 Major compaction 操作时,数据才会被真正的从磁盘上删除删除标记也会从StoreFile删除。...
  • HBaseHBase 族属性配置

    千次阅读 2019-07-16 17:25:07
    文章目录、创建表及属性查看二、族属性配置2.1、版本数量(VERSIONS)2.2、存活时间(TTL)2.3、最小版本数(MIN_VERSIONS )2.4、保留删除的单元格(KEEP_DELETED_CELLS)2.5、数据块大小(BLOCKSIZE )2.6、块...
  • Hbase添加和删除列

    千次阅读 2020-05-14 19:06:09
    hbase> alter ‘hbasetest’, {NAME => ‘cf2’, VERSIONS => 800} hbase> alter ‘hbasetes’, {NAME => ‘cf2’, METHOD => ‘delete’}
  • 最近遇到的问题,需要删除指定族下的指定,考虑到原理就是扫描hbase表,获取rowkey,进行删除,value值的返回没有意义。但是怎么能快速扫描呢?高性能肯定是第考虑点,废话不说,上代码: public static ...
  • Hbase 删除表数据

    2021-05-18 16:10:06
    1.Hbase 清空整个表数据 注意:清空表数据是否要保留预分区 # truncate会把表分区也清除掉 truncate 'namespace:tableName' # truncate_preserve只清除数据 ...# 删除emp表中第二行personal data:name
  • HBase删除和修改操作

    2021-06-08 09:57:47
    HBase的底层依赖于HDFS,...HBase是面向的存储数据的,最终的存储单元都是KeyValue的结构,HBase本身也定义了个KeyValue的类型,这是HBase数据存储的基本类型。 从名字来看应该只有两个数据,个是Key,个是Value
  • HBase 删除数据过程分析

    千次阅读 2017-12-27 17:27:05
    单行删除不会立即删除,而是先在指定存储单元上标记删除,等到下次region合并或者分裂的时候才会移除数据删除行的时候,可以指定簇、或者中具体数据进行删除。没有任何指定的情况下会删除整行数据。如果使用...
  • hbase删除数据每次都要传入一的rowkey,然后按行删除数据,所以我们删除一列只需要获取到这一列数据的行号就行了。 from happybase import Connection CLIENT=Connection(host='xxxxxxxx',port=xxxxx) table=...
  • hbase删除有三种标记 Delete标记: 删除特定列列指定的版本 DeleteFamily标记: 删除特定族所有 DeleteColumn标记: 删除特定的所有版本 指定rowkey: 使用DeleteFamily标记 不加时间戳表示删除指定rowkey的...
  • HBase介绍(存储)

    千次阅读 2016-04-16 13:25:16
    HBase介绍(存储) 2013-11-26 23:25 5871人阅读 评论(2) 收藏 举报  分类:   云存储(2)   Hbase简介  started by chad walters and jim  2006.11 G release paper on ...
  • HBase 删除指定column的所有数据

    千次阅读 2018-06-29 16:10:35
    最近由于项目改版更新,原来存储在Hbase表中的某一列的数据需要全部更新,但是更新时需要每天去定时计算,而且第二天的数据需要用到前面好几天的历史数据,故需要将原来的这一列全部清空 As we know, during ...
  • 十九、HBase删除数据

    千次阅读 2018-07-25 09:04:04
    使用 delete 命令,可以在个表中删除特定单元格。 delete 命令的语法如下: delete ‘&lt;table name&gt;’, ‘&lt;row&gt;’, ‘&lt;column name &gt;’, ‘&lt;time stamp&gt...
  • HBase删除表中数据

    万次阅读 2017-08-15 14:22:17
    1、使用hbase shell中delete命令删除表中特定的单元格数据,命令格式如下:delete 'tablename','row','column name','time stramp'删除emp表中第二行personal data:name、时间节点为1502182102866的记录:delete '...
  • Hbase实例之创建

    千次阅读 2013-08-21 23:32:24
    关于HBase的前后因果先不讨论,现在写Hbase实例,怎么样去创建Hbase簇. public class HbaseTable { //定义hbase连接 Configuration conf = null; //构造方法初始化,连接到hbase数据库 HbaseIf...
  • Hbase删除数据表

    2015-09-08 09:15:47
    使用 delete 命令,可以在个表中删除特定单元格。 delete 命令的语法如下: delete ‘table name>’, ‘row>’, ‘column name >’, ‘time stamp>’ 下面是删除特定单元格和例子。在这里,我们删除salary...
  • hbase分区压缩

    千次阅读 2014-07-10 16:12:47
    Hbase个分布式的、面向的开源数据库,其实现是建立在google 的bigTable 理论之上,并基于hadoop HDFS文件系统。 Hbase不同于一般的关系型数据库(RDBMS)。是种适用于非结构化数据存储的数据库,且Hbase是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,081
精华内容 11,232
关键字:

hbase删除一列