好久,好久没有写个博客了,自从上次封闭开始,到“自闭”,有了一段时间了,哈哈^_^ 、

多亏了云桌面的歇菜, 一下午啥都干不了, 突然想到,好久没有写点啥了,就写的,让时间流走有点痕迹吧 _(:з」∠)_

之前,做过一个小工具,就是将一个文件中的数据,插入的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 的方式,

  1. 使用Hbase Put API
  2. 使用Hbase批量加载工具
  3. 自定义的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插入数据,你会选择哪种?的更多相关文章

  1. Mysql 插入数据,随机事件选择

    在拼写sql的 时候,mysql字段如果需要添加当前时间可以用NOW() 函数 // String sql = ("insert into tablename(content, create ...

  2. 通过时间戳批量删除hbase的数据

    如何通过时间戳批量删除hbase的数据 我们使用hive关联hbase插入数据时,有时会写错数据,此时hbase中的数据量已经很大很大了(上亿).此时,我们要修改错误的数据,只需要删除写错的那部分数据 ...

  3. C#批量插入数据到Sqlserver中的四种方式

    我的新书ASP.NET MVC企业级实战预计明年2月份出版,感谢大家关注! 本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的 ...

  4. C#批量插入数据到Sqlserver中的三种方式

    本篇,我将来讲解一下在Sqlserver中批量插入数据. 先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生 成 ...

  5. C#_批量插入数据到Sqlserver中的四种方式

    先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...

  6. C# 之 批量插入数据到 SQLServer 中

    创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快.而如果存在索引的情况下,每次插入记录都会进行索引重建,这是非常耗性能的.如 ...

  7. C#批量插入数据到Sqlserver中的四种方式 - 转

    先创建一个用来测试的数据库和表,为了让插入数据更快,表中主键采用的是GUID,表中没有创建任何索引.GUID必然是比自增长要快的,因为你生成一个GUID算法所花的时间肯定比你从数据表中重新查询上一条记 ...

  8. 浅谈c++中map插入数据的用法

    map:数据的插入 在构造map容器后,我们就可以往里面插入数据了.这里讲三种插入数据的方法:第一种:用insert函数插入pair数据 map<int, string> mapStude ...

  9. 【转载】C#批量插入数据到Sqlserver中的三种方式

    引用:https://m.jb51.net/show/99543 这篇文章主要为大家详细介绍了C#批量插入数据到Sqlserver中的三种方式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本篇, ...

随机推荐

  1. Java中遇到Case cannot be resolved to a variable问题

    Java中遇到Case cannot be resolved to a variable问题 记录一下这两天项目中遇到的一个小问题. 在项目中遇到一个问题,一直显示   Case cannot be ...

  2. Busness Client 客户端配置

    1,打开Busness Client,点击新建按钮: 2,选择New System Connection(SAP Logon),这个是配置GUI登陆的,就相当于用BC登陆GUI. 这里就和GUI的配置 ...

  3. httpPost请求用java代码实现的方法

    原文:https://www.cnblogs.com/johnson-yuan/p/6713384.html package com.day3.sample; //首先下面我我们需要导入的jar包和文 ...

  4. 【Netty】初识Netty

    一.为什么会出现Netty 之前我们使用通用的应用程序或库来相互通信.例如,我们经常使用HTTP客户机库从web服务器检索信息,并通过web服务调用远程过程调用.然而,通用协议或其实现有时伸缩性不是很 ...

  5. Office--CVE-2017-11882【远程代码执行】

    Office远程代码执行漏洞现POC样本 最近这段时间CVE-2017-11882挺火的.关于这个漏洞可以看看这里:https://www.77169.com/html/186186.html 今天在 ...

  6. 【转】tf.SessionRunHook使用方法

    原文地址:https://blog.csdn.net/mrr1ght/article/details/81011280 .本文有删减. tf.train.SessionRunHook()是一个类:用来 ...

  7. python应用-彩票随机码的输出

    """ 双色球-6个红色球(1-33)和一个蓝色球(1-16) """ from random import randint def sel ...

  8. 20180523模拟赛T1——前缀?

    (a.cpp/c/pas) Time Limit:1 Sec Memory Limit:128 MB 简化版题意 jyt毒瘤,写了超长的题面,要看完整题面的翻到最后-- 老太太认为一个长度为 N 的仅 ...

  9. C 语言项目中.h文件和.c文件的关系

    http://blog.csdn.net/xingkong_678/article/details/38639847 关于两者以前的关系,要从N年以前说起了~ long long ago,once a ...

  10. 文件夹上传组件webupload插件

    javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id=" ...