往hbase插入数据,你会选择哪种?
好久,好久没有写个博客了,自从上次封闭开始,到“自闭”,有了一段时间了,哈哈^_^ 、
多亏了云桌面的歇菜, 一下午啥都干不了, 突然想到,好久没有写点啥了,就写的,让时间流走有点痕迹吧 _(:з」∠)_
之前,做过一个小工具,就是将一个文件中的数据,插入的hbase中, 将其简单阐述一番,多少记一点吧,要不在过一段时间都忘了。
插入到hbase中,有很多中选择,java的方式是可以的,但是做一个脚本,没有必要,操作起来不方便,还得编译,.... ,
选择shell或python的方式,是个方便的选择,反正是个小工具,有可能会随时调整 ,而且linux是自带的Python环境
要用Python脚步的方式插入到hbase,参考hbase的官方文档。
查看hbase Reference Guide, 里面介绍内容很多,包括很多入门操作说明等。
本次,主要是查看了如何更好的利用Python脚步插入到hbase中。
由于hbase是java写的,要用Python去执行查询插入数据到hbase中,是有两种方式走,
- 一种是利用thrift的方式,作为python和java中间翻译层,进行操作hbase的方式;
- 还有个方法,就是用Python包装一层linux shell方式, 用hbase shell的方式操作hbae。
由于要用thrift方式,是需要开启服务,需要往Python安装其他第三方类库,增加运维人员负担,最后尝试后采用第二中方法。
用hbase shell 的方式,
- 使用Hbase Put API
- 使用Hbase批量加载工具
- 自定义的MapReduce job
这几种HBase数据导入方式(不推荐使用)
理由:
- 这三种方式都涉及到Put内置,大多数数据迁移到hbase场景,目前只是简单直接获取表结构和插入数据,使用单线程,这种效果非常慢,还得自己去写多线程完成,这样还是增加工作量和复杂度。
最后,查询官方文档后,得知ImportTsv是HBase官方提供的基于Mapreduce的批量数据导入工具。
同时ImportTsv是Hbase提供的一个命令行工具,可以将存储在HDFS上的自定义分隔符(默认\t)的数据文件,通过一条命令方便的导入到HBase表中,对于大数据量导入非常实用。
这种方式,是将要插入数据写放到HDFS上,这样保证数据不丢失,多份数据,然后开启MapReduce的方式,插入到hbase。当执行10w条数据插入没有问题,但100w的数据插入就会出现丢失情况。
解决方案是先用ImportTsv生成HFile,然后在用bulkload 的方式将HFIle导入到hbase的里面。
总结:
多看hbase的官方文档,但也要多搜索一下国内大牛写的博客,毕竟有人实际过,少尝试一些方法。
若您看到后,会用什么方式,可以留言讨论。
O(∩_∩)O哈哈~ 刚看了一下,云桌面好了,干活了!
往hbase插入数据,你会选择哪种?的更多相关文章
- Mysql 插入数据,随机事件选择
在拼写sql的 时候,mysql字段如果需要添加当前时间可以用NOW() 函数 // String sql = ("insert into tablename(content, create ...
- 通过时间戳批量删除hbase的数据
如何通过时间戳批量删除hbase的数据 我们使用hive关联hbase插入数据时,有时会写错数据,此时hbase中的数据量已经很大很大了(上亿).此时,我们要修改错误的数据,只需要删除写错的那部分数据 ...
- C#批量插入数据到Sqlserver中的四种方式
我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...
- C#批量插入数据到Sqlserver中的三种方式
本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...
- C#_批量插入数据到Sqlserver中的四种方式
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
- C# 之 批量插入数据到 SQLServer 中
创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如 ...
- C#批量插入数据到Sqlserver中的四种方式 - 转
先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...
- 浅谈c++中map插入数据的用法
map:数据的插入 在构造map容器后,我们就可以往里面插入数据了.这里讲三种插入数据的方法:第一种:用insert函数插入pair数据 map<int, string> mapStude ...
- 【转载】C#批量插入数据到Sqlserver中的三种方式
引用:https://m.jb51.net/show/99543 这篇文章主要为大家详细介绍了C#批量插入数据到Sqlserver中的三种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本篇, ...
随机推荐
- redis-启用命令
一.redis后端启动: 1.将redis源码包中的redis.conf配置文件复制到redis/bin/下 # cd /root/redis-3.0.0 # cp redis.conf /usr/l ...
- Python之路(第四十一篇)线程概念、线程背景、线程特点、threading模块、开启线程的方式
一.线程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程.程序和进程的区别就在于:程序是指令的集合,它是 ...
- cookie和session。
Cookie和Session: 会话技术: 1.会话:一次会话中包含多次请求和响应. * 一次会话:浏览器第一次给服务器发送请求,会话建立,直到一方断开为止. 2.功能:在一次会话的范围内的多次请求间 ...
- Linux指令(压缩和解压类)
gzip/gunzip 指令 gzip用于压缩文件,gunzip用于解压基本语法: gzip文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件) gunzip文件.gz (功能描述:解压缩文件命 ...
- springboot+jndi+tomcat配置多数据源
1.在application.properties中,添加jndi配置,如下图 2.新建dataSourceConfig类 3.dataSourceConfig类详细代码,这里只贴出其中一个,多个数据 ...
- 【转】tf.train.MonitoredTrainingSession()解析
原文地址:https://blog.csdn.net/mrr1ght/article/details/81006343. 本文有删减. MonitoredTrainingSession定义 首先,tf ...
- Android AMS服务
继续来研究Android Framework层相关的一些东东,这里是以Android8.0版本的源码进行梳理的,关注的还是其核心流程,不是彻底分析,了解了核心流程是为了了期其大概的原理. Androi ...
- httprunner学习11-辅助函数debugtalk.py
前言 在httprunner里面,每个 YAML / JSON 文件的脚本都是独立运行的,有时候我们希望能跨文件使用公用的参数. 比如登录生成一个token,后面的用例都可以去引用这个token值,或 ...
- 如何将页脚固定在页面底部,4中方法 转载自:W3CPLUS
原博客地址:http://www.w3cplus.com/css/css-sticky-foot-at-bottom-of-the-page 作为一个Web的前端攻城师,在制作页面效果时肯定有碰到下面 ...
- VoIP基本原理
VoIP基本原理 VoIP是通过Internet等互联网络传递语音信息的,主要包括终端设备.网关.网守和网络管理等部分.网关负责提供IP网络和传统的PSTN接口. VoIP的基本原理:通过语音压缩算法 ...