Hbase导出数据成csv格式或flat文件

背景

最近业务部门需要将Hbase数据导出成csv格式文件,或是flat文件(平面格式)。
遇到的难点是,Hbase中无固定的列名。

语言

shell

环境

CentOS 7系统
Hbase 1.5.0

逻辑

在这里插入图片描述
Hbase文件导出后,通过分割文件,并行处理
主要通过“字典”的功能,确保每列都能导出

性能

目前将文件分成10个小文件,并行处理,
10分钟处理100万条数据

具体代码

export_file_from_hbase.sh

#!/bin/bash
#Hbase导出文件

#定义时间
export BATCH_DATETIME=`date +"%Y%m%d"`000000
export PROCESS_FOLDER=/home/sinobase01/data/test     #指定当前目录,防止文件误删除

#1. 查询语句
#需要在hbase中确保查询语句可执行,且结果为所需数据
export HBASE_TABLE=$1
export HBASE_QUERY=`cat hbase_query.hql`  #该部分只为hbase shell查询语句

#2.定义变量
export HBASE_OUTPUT_FILE=${
   HBASE_TABLE}_exported_file_${
   BATCH_DATETIME}.txt
export MAIN_LOG=export_hbase_file_process_${
   BATCH_DATETIME}.log
export SPLIT_FILE_NUMBER=10

check_hbase(){
   
        which hbase
        if [ $? -ne 0 ];then
                echo "[`date +"%Y-%m-%d %H:%M:%S"`] Hbase not found! Please check if Hbase software installed whithin current user."
        else
                echo "[`date +"%Y-%m-%d %H:%M:%S"`] Hbase check pass!"
        fi
}

export_hbase_file(){
   
        #清空文件
        cat /dev/null > ${
   HBASE_OUTPUT_FILE}
        echo "[`date +"%Y-%m-%d %H:%M:%S"`] ${HBASE_OUTPUT_FILE} data cleared!"
        #导出文件
        echo ${
   HBASE_QUERY}|hbase shell > ${
   HBASE_OUTPUT_FILE}
        if [ $? -ne 0 ];then
                echo "[`date +"%Y-%m-%d %H:%M:%S"`] failed to export file ${HBASE_OUTPUT_FILE}, please checked!"
        else
                echo "[`date +"%Y-%m-%
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Albert_Fang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值