hbase-0.96.x相对hbase-0.94.x的改变

突破NER性能瓶颈:BERT与LLM协同的混合架构实践 性能卓越:在多个测试集上,F1分数比单一模型提升5-15%成本可控:相比纯LLM方案,成本降低60%以上易于落地:架构清晰,便于调试和优化这种"专才+通才"的组合思路可以扩展到其他NLP任务中,如关系抽取、事件提取、文本分类等。更精细的流水线优化多模型投票机制在线学习与自适应调整不追求单一模型的万能,而是通过精心设计的组合,让每个组件发挥其独特优势,最终实现系统性能的最优化。欢迎在评论区分享你在NER任务中的实践经验,或者对这个混合架构的改进建议! 阅读详情

环境:
hadoop:hadoop-2.2.0
hbase:hbase-0.96.0
1.org.apache.hadoop.hbase.client.Put
    <1>取消了无参的构造方法
    <2>Put类不再继承Writable类     
        0.94.6时public class Put extends Mutation implements HeapSize, Writable, Comparable<Row>
        0.96.0时public class Put extends Mutation implements HeapSize, Comparable<Row>
解决方法:
        由public class MonthUserLoginTimeIndexReducer extends Reducer<BytesWritable,MonthUserLoginTimeIndexWritable, ImmutableBytesWritable, Writable> {
改public class MonthUserLoginTimeIndexReducer extends Reducer<BytesWritable,MonthUserLoginTimeIndexWritable, ImmutableBytesWritable, Put> {
2.org.apache.hadoop.hbase.client.Mutation.familyMap
     org.apache.hadoop.hbase.client.Mutation.familyMap类型改变:
     /**
     * 0.94.6
     * protected Map<byte[],List<KeyValue>> familyMap
     * 
     * 0.96.*
     * protected NavigableMap<byte[],List<Cell>> familyMap
     * org.apache.hadoop.hbase.Cell hbase-0.94.*中是没有的
     */    

     org.apache.hadoop.hbase.KeyValue的改变:
     /**
     * 0.94.*
     * public class KeyValue extends Object implements Writable, HeapSize
     * 
     * 0.96.0
     * public class KeyValue extends Object implements Cell, HeapSize, Cloneable
     */
     解决方法:将代码中的List<KeyValue>改成List<Cell>
3. org.apache.hadoop.hbase.KeyValue
     0.96.0中方法getFamily已被弃用(Deprecated),改成方法getFamilyArray() 
4.org.apache.hadoop.hbase.HTableDescriptor   
     类org.apache.hadoop.hbase.HTableDescriptor的构造方法public HTableDescriptor(String name)已被弃用(Deprecated)
     解决方法:使用public HTableDescriptor(TableName name)
     旧:HTableDescriptor tableDesc = new HTableDescriptor(tableName);
     新:HTableDescriptor tableDesc = new HTableDescriptor(TableName.valueOf(tableName));
5.org.apache.hadoop.hbase.client.HTablePool
     类org.apache.hadoop.hbase.client.HTablePool整个被弃用(Deprecated)
     解决方法:使用HConnection.getTable(String)代替,HConnection是个接口,类CoprocessorHConnection是它唯一的实现类:
     HRegionServer hRegionServer = new HRegionServer(conf) ;
     HConnection connection = HConnectionManager.createConnection(conf);
     hConnection = new CoprocessorHConnection(connection,hRegionServer);
6.org.apache.hadoop.hbase.client.Result
     方法public KeyValue[] raw()被弃用(Deprecated),建议使用public Cell[] rawCells()
     方法getRow被弃用(Deprecated)
     方法getFamily被弃用(Deprecated)
     方法getQualifier被弃用(Deprecated)
     方法getValue被弃用(Deprecated)
     方法public List<KeyValue> getColumn(byte[] family,byte[] qualifier)被弃用(Deprecated)
     方法public KeyValue getColumnLatest(byte[] family,byte[] qualifier)被弃用(Deprecated)
     Cell中:改成以下方法
     getRowArray()
     getFamilyArray()
     getQualifierArray()
     getValueArray()
     Result中:增加如下方法
     public List<KeyValue> getColumnCells(byte[] family,byte[] qualifier)
     public KeyValue getColumnLatestCell(byte[] family,byte[] qualifier)
     改动:所有ipeijian_data中凡是和【新增用户活跃用户流失用户】相关的都做如下变化:
     旧代码:if (value.raw().length == 1
     新代码:if (value.rawCells().length == 1
7.job中设置TableInputFormat.SCAN
     0.96.0中去掉了方法:public void write(DataOutput out)throws IOException
     之前版本使用conf.set(TableInputFormat.SCAN, StatUtils.convertScanToString(scan));进行设置
     StatUtils.convertScanToString的具体实现为:
     public static String convertScanToString(Scan scan) throws IOException {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(out);
            scan.write(dos);
            return Base64.encodeBytes(out.toByteArray());
     }
     该方法的实现与TableMapReduceUtil.convertScanToString(Scan scan)是一样的。
     但是当hbase升级到了0.96.*是对于类Scan弃用(不仅仅是Deprecated,而是Deleted)了方法write,所以上面
     的实现变为不正确
     hbase0.96.*中对该方法进行了重新的实现:
     public static String convertScanToString(Scan scan) throws IOException {
            ClientProtos.Scan proto = ProtobufUtil.toScan(scan);
            return Base64.encodeBytes(proto.toByteArray());
     }
     所以做如下更改:
     StatUtils类中方法convertScanToString的实现做如上更改以适配hbase0.96.* 
8.cn.m15.ipj.db.hbase.MyPut
    自定义的Put类,比传统的Put类多一个length,原版和新版代码比较:
    原版:(红色字体为API变为新版时报错的地方)

public class MyPut extends Put {
     public MyPut(byte[] row, int length) {                                    
     //原因是put的无参构造方法已经在新本中消失
          if (row == null || length > HConstants.MAX_ROW_LENGTH) {
               throw new IllegalArgumentException(“Row key is invalid”);
          }
          this.row = Arrays.copyOf(row, length);
          this.ts = HConstants.LATEST_TIMESTAMP;
     }    
     public MyPut add(byte[] family, byte[] qualifier, long ts, byte[] value,int length) {
          List<KeyValue> list = getKeyValueList(family);
          KeyValue kv = createPutKeyValue(family, qualifier, ts, value, length);
          list.add(kv);
          familyMap.put(kv.getFamily(), list);                                   
          //familyMap的类型已经改变
          return this;
      }
     private List<KeyValue> getKeyValueList(byte[] family) {
          List<KeyValue> list = familyMap.get(family);                     
          //familyMap的类型已经改变
          if (list == null) {
               list = new ArrayList<KeyValue>(0);
          }
          return list;
     }
     private KeyValue createPutKeyValue(byte[] family, byte[] qualifier,long ts, byte[] value, int length) {
          return new KeyValue(this.row, 0, this.row.length, family, 0,
          family.length, qualifier, 0, qualifier.length, ts,
          KeyValue.Type.Put, value, 0, length);
     }
}

更改之后:

public MyPut(byte[] row, int length) {
     super(row,length);                                                                      
     //新增加
     if (row == null || length > HConstants.MAX_ROW_LENGTH) {
          throw new IllegalArgumentException(“Row key is invalid”);
     }
     this.row = Arrays.copyOf(row, length);
     this.ts = HConstants.LATEST_TIMESTAMP;
     }
     public MyPut add(byte[] family, byte[] qualifier, long ts, byte[] value,int length) {
          List<Cell> list = getCellsList(family);
          KeyValue kv = createPutKeyValue(family, qualifier, ts, value, length);
          list.add(kv);
          familyMap.put(CellUtil.cloneFamily(kv), list);
          return this;
     }    
     private List<Cell> getCellsList(byte[] family) {
          List<Cell> list = familyMap.get(family);
          if (list == null) {
              list = new ArrayList<Cell>(0);
          }
          return list;
     }
     private KeyValue createPutKeyValue(byte[] family, byte[] qualifier,long ts, byte[] value, int length) {
          return new KeyValue(this.row, 0, this.row.length, family, 0,family.length, qualifier, 0, qualifier.length, ts,
                    KeyValue.Type.Put, value, 0, length);
     }
}

大模型自我认知微调的实战教程 本文主要介绍了大模型自我认知微调的实战教程,希望对学习大语言模型的同学们有所帮助。微调成功并保留原有能力的截图如下所示: 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 3. 实战代码 3.1 配置数据集 3.2 lora微调 阅读详情

相关推荐

《华为项目管理之道》第1章笔记

performance indicator,KPI)纳入个人绩效承诺书,贯彻结果导向的理念,以向员工。客户需求是华为发展的原动力,为客户服务是华为存在的唯一理由。目经理‘用兵’,依靠市场机制‘调兵’”,打破了人员在功能部门的板结,实现了听得。为管理者选拔的必要条件,项目经理成为人人向往的岗位。《华为项目管理之道》,是新出的华为官方的项目管理书,整个书不错。伴随着项目型组织的建立,华为逐步形成了完备的项目管理流程和制度,从而将业务运。为此,通过改革,重新明确了项目经理承担的经营责任,并开始以项。

jackyrongvip的专栏 2128

hbase 新旧API对比

1.org.apache.hadoop.hbase.client.Put 取消了无参的构造方法 Put类不再继承Writable类 0.94.6时public class Put extends Mutation implements HeapSize, Writable, Comparable 0.96.0时public class Pu

Jor_rosen的技术博客 5096

HBase常用操作代码实现

package hmr.hbase.first; import java.util.Iterator; import java.util.List; import java.util.Map.Entry; import java.util.NavigableMap; import org.apache.hadoop.conf.Configuration; import org.apache....

nengyu的专栏 490

Logisim 原码一位乘法器设计 图解及代码(计算机组成原理)

Logisim 原码一位乘法器设计 图解及代码(计算机组成原理) 包对

醉蕤的博客 4379

Quartus安装Altera USB-Blaster安装驱动程序出现问题(代码39)的解决办法

Quartus安装Altera USB-Blaster安装驱动程序出现问题(代码39)的解决办法

MCU_HOT的博客 1万+

HBase一些知识提醒

部署架构---->HMaster负责协调工作,负责建表、删表、移动Region、合并操作等。RegionServer是负责做数据存储的,以及客户端的CRUD等都是通过ZooKeeper来与RegionServer交互的。ZooKeeper管理了HBase所有的RegionServer信息,包括具体的数据段存放在哪个RegionServer上。 存储架构:一个列或者多个列组成一个行。每个行拥有...

wzsyf的博客 481

【100%通过率】华为od机试C卷【贪吃的猴子】Java&Go 实现

一只贪吃的猴子,来到一个果园,发现许多串香蕉排成一行,每串香蕉上有若干根香蕉。每串香蕉的根数由数组numbers给出。猴子获取香蕉,每次都只能从行的开头或者未尾获取,并且只能获取N次,求猴子最多能获取多少根香蕉。第一次获取香蕉为行的开头,第二次获取为行的末尾,因此最终根数为4+3 =7。全部获取所有的香蕉,因此最终根数为1+2+3 = 6。第二行为数组numbers的值每个数字通过空格分开。1:简单题目,两个指针分别指向头尾,逐个对比即可。第一行为数组numbers的长度。第三行输入为N,表示获取的次数。

MISAYAONE的博客 1439

HBase基本操作:JAVA API操作

IDEA新建项目,引入POM文件 <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.3.0...

Sail__的专栏 995

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

R语言生存分析之限制性立方样条分析:样条回归、和多项式回归有什么不同?是否存在非线性关系、限制性立方样条cox回归模型

statistics+insight+vista+power 635

[RK3568 Android11] 教程之原厂SDK源码适配AIO-3568J板子跑起来

目录 一、前提 二、修改dts设备树 三、适配板子的dts 四、编译系统烧入固件验证 一、前提 因源码是直接使用原厂的SDK,没有使用firefly配套的SDK源码,所以手上这块firefly aio-3568j板子在硬件设计上与原厂使用的板子会有些差异;就是因为这些差异会导致新固件烧入后,debug串口打印许多错误信息,可能的话,系统还会崩溃掉,跑不起来; 主要差异在哪里呢?比如: ● DDR类型和品牌多样性; ...

~未来可期~ 1744

HBase java API

1.pom <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>1.3.5</version> </dependency> 2.api...

诸葛子房的博客 311

Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~

Unity 面试篇⚠️ | Unity性能优化好,山寨机都能跑~

m0_58523831的博客 1万+

Hbase0.96与Java的交互访问

hbase-0.96.x相对hbase-0.94.x的改变 hadoop:hadoop-2.2.0hbase:hbase-0.96.01.org.apache.hadoop.hbase.client.Put <1>取消了无参的构造方法 <2>Put类不再继承Writable类 0.94.6时public class Put e...

weixin_30737433的博客 88

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

HBase2.x精通:结合源码讲解Region的三种Spilt策略

微信公众号:大数据开发运维架构 关注可了解更多大数据相关的资讯。问题或建议,请公众号留言; 如果您觉得“大数据开发运维架构”对你有帮助,欢迎转发朋友圈 从微信公众号拷贝过来,格式有些错乱,建议直接去公众号阅读 一、概述 最近在工作中接触到split,于是查看了这块的源代码,先看到了split的策略,今天就说说这个吧;这里我是基于HDP版本的Hadoop集群,对应的HBase的版本为2.2.1,后续的分析都是基于该版本的源码做的分析,HBase-2.x支持7种Region自动拆...

陆继森的技术专栏 880

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

《Hbase原理与实践》读书笔记——1.HBase概述

1.1 HBase前世今生 Google当年风靡一时的“三篇论文”:GFS -> HDFS , Mapreduce -> hadoop mapreduce , bigTable -> HBase。 HBase在国外起步很早,包括Facebook、Yahoo、Pinterest等大公司都大规模使用HBase作为基础服务。在国内HBase相对起步较晚,但现在各大公司对于HBase的使用已经越来越普遍,包括阿里巴巴、小米、华为、网易、京东、滴滴、中国电信、中国人寿等公司都使用HBase存储海

qq_31957747的博客 712

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HBase在淘宝的应用和优化小结

HBase在淘宝的应用和优化小结 作者:nosqlfan on 星期一, 三月 5, 2012 · 3条评论 【阅读:8,733 次】  本文来自于NoSQLFan联合作者@koven2049,他在淘宝从事Hadoop及HBase相关的应用和优化。对Hadoop、HBase都有深入的了解,本文就是其在工作中对HBase的应用优化小结,分享给大家。 原文地址:http://walkov...

weixin_34381687的博客 141

Phoenix 4.x +sqlline3.7操作hbase-0.98.6

有了Phoenix 就能够像mysql、oracle等RDBMS一样通过sql 操作Hbase,大大降低了开发成本。而且据官方说明,Phoenix 的性能很高,相对于 hbase 原生的scan 并不会差多少,而对于类似的组件 hive、Impala等,性能有着显著的提升

program哲学 3180

hbase使用Phoenix

Phoenix Hbase查询工具,提供在hbase中sql方式查询。提供了很多sql语法,二级索引等传统数据库支持的功能。新版本中有支持transaction(beta)。 官网 http://phoenix.apache.org/Phoenix-in-15-minutes-or-less.html、 二进制文件下载 http://mirror.bit.edu.cn/apache/phoenix/apache-phoenix-4.9.0-HBase-1.2/bin/ 部署安装 http://www.zh

急速虫子 2955

hadoop+hbase+zookeeper环境搭建过程总结

安装的环境要求:我用的是x86_64的CentOS6.3 linux操作系统,安装过程很简单,一路默认即可。      搭建开发环境是学习一门新技术的首先要面对的,当然技术的选型也是相当重要,刚开始搭建环境的时候公司让用cloudera manager CDH4自动在cloudera官网下载安装hadoop、hbase、zookeeper等,但是这个过程在网速不好的情况下是相当的缓慢。(在天朝

dangyifei 4575

HBase1.2官方文档——Apache HBase Performance Tuning

原文档:http://hbase.apache.org/1.2/book.html#performance Apache HBase Performance Tuning 92. Operating System 92.1. Memory RAM, RAM, RAM. Don’t starve HBase. 92.2. 64-bit Use a 64-b...

weixin_30482383的博客 390

图解Hbase的完全分布式部署

[b][color=olive][size=x-large]上篇文章,散仙介绍了Hbase的单机伪分布式的安装,那么今天,散仙再来介绍下Hbase的完全分布式的安装部署,完全分布式的安装同样是基于Hadoop的HDFS底层的,也就是说,要想完成Hbase分布式的安装,那么你的Hadoop坏境也必须是完全分布式的,然后一个Hbase应用配套的部署在一个Hadoop节点上,关于Hadoop的完全分布式...

三劫散仙 407

Hbase好文__结合源码讲解Region的三种Spilt策略

来源微信公众号:HBase工作笔记 结合源码讲解Region的三种Spilt策略 一、概述 最近在工作中接触到split,于是查看了这块的源代码,先看到了split的策略, HBase的版本为2.2.1, HBase-2.x支持7种Region自动拆分的策略,继承关系如下图所示: 二、针对这几种默认拆分策略做单独的说明 1.RegionSplitPolicy RegionSplitPolicy是一个抽象类,其作为所有Region拆分策略的父类。 在0.94版

lightupworld的博客 527

Apache HBase中等对象存储MOB压缩分区策略介绍

Apache HBase 中等对象存储(Medium Object Storage, 下面简称 MOB)的特性是由 HBASE-11339 引入的。该功能可以提高 HBa...

Hadoop技术博文 1265
上一篇: HBase rest 和thrift java例子
下一篇: 从hadoop2.2,HBase0.96 mapreduce操作
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值