zoukankan      html  css  js  c++  java
  • 往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 的方式,

    1. 使用Hbase Put API
    2. 使用Hbase批量加载工具
    3. 自定义的MapReduce job

       这几种HBase数据导入方式(不推荐使用)
       理由:

    • 这三种方式都涉及到Put内置,大多数数据迁移到hbase场景,目前只是简单直接获取表结构和插入数据,使用单线程,这种效果非常慢,还得自己去写多线程完成,这样还是增加工作量和复杂度。

       最后,查询官方文档后,得知ImportTsv是HBase官方提供的基于Mapreduce的批量数据导入工具。
       同时ImportTsv是Hbase提供的一个命令行工具,可以将存储在HDFS上的自定义分隔符(默认 )的数据文件,通过一条命令方便的导入到HBase表中,对于大数据量导入非常实用。
       这种方式,是将要插入数据写放到HDFS上,这样保证数据不丢失,多份数据,然后开启MapReduce的方式,插入到hbase。当执行10w条数据插入没有问题,但100w的数据插入就会出现丢失情况。
    解决方案是先用ImportTsv生成HFile,然后在用bulkload 的方式将HFIle导入到hbase的里面。

    总结:
    多看hbase的官方文档,但也要多搜索一下国内大牛写的博客,毕竟有人实际过,少尝试一些方法。

       

    若您看到后,会用什么方式,可以留言讨论。

    O(∩_∩)O哈哈~ 刚看了一下,云桌面好了,干活了!

  • 相关阅读:
    iOS强引用和弱引用
    HTTP和Socket的区别
    iOS日期加减
    iOS判断日期A是否在日期B到日期C之间
    分布式锁与实现(一)——基于Redis实现 【比较靠谱】
    Redisson实现分布式锁
    Redisson分布式锁实现
    从redis中取值如果不存在设置值,使用Redisson分布式锁【我】以及不使用锁的方式
    redisson整合spring
    如何优雅地用Redis实现分布式锁?
  • 原文地址:https://www.cnblogs.com/nucdy/p/10931536.html
Copyright © 2011-2022 走看看