Hbase: IllegalArgumentException: No columns to insert
2016-06-13 15:45
483 查看
最近在做hbase数据插入测试时,遇见了此异常,通过跟断点调试发现:
在执行put操作的时候,如果只是实例化了一个Put,却没有给Put添加family(column)。执行就会出现此标题异常。
以下附上调试过程:
HTable在作doPut(Put put)操作时,会验证validatePut(put)
跟断点到这里就已经很明确了,htable在doPut执行时,会验证当前put的familyMap是否为空。如果为空,就会抛出‘No columns to insert’ 异常
附:以上引用到源码部分源自hbase client源代码
在执行put操作的时候,如果只是实例化了一个Put,却没有给Put添加family(column)。执行就会出现此标题异常。
以下附上调试过程:
HTable在作doPut(Put put)操作时,会验证validatePut(put)
private void doPut(Put put) throws InterruptedIOException, RetriesExhaustedWithDetailsException { ... this.validatePut(put); ... }继续跟断点至validatePut(put),发现isEmpty()的判断
public void validatePut(Put put) throws IllegalArgumentException { validatePut(put, this.maxKeyValueSize); } public static void validatePut(Put put, int maxKeyValueSize) throws IllegalArgumentException { if(put.isEmpty()) { throw new IllegalArgumentException("No columns to insert"); } else { ... } }继续查看put.isEmpty(),如下:
public boolean isEmpty() { return this.familyMap.isEmpty(); }
跟断点到这里就已经很明确了,htable在doPut执行时,会验证当前put的familyMap是否为空。如果为空,就会抛出‘No columns to insert’ 异常
附:以上引用到源码部分源自hbase client源代码
相关文章推荐
- ios的状态栏(UIStatusBar)
- 结合源代码分析一个完整的中断过程
- Android百度地图应用之创建显示地图
- BootStrap智能表单实战系列(十一)级联下拉的支持
- 3DTouch实现
- #define相关
- [转载]SQL自定义函数
- ctags vim csrope
- jquery源码--isArraylike merge makeArray
- Android Studio 更新升级之增量升级
- C++灵魂所在之---多态的前世与今生
- C 碎片三 运算符与表达式
- C 碎片四 流程控制
- Object.getOwnPropertyNames()
- Use Apache2 on Ubuntu
- RESTful架构详解
- shell脚本 实现在git下两个提交下文件差异并打包
- java的一些知识(一)
- Spring之IoC容器解析(一)
- 实现向 python 脚本中传递列表,字典参数