shell脚本实现把文本数据导入Redis

今年公司注重实时相关的业务,但是平台Hive入Redis的功能还没上线,只能通过脚本实现把Hive里的数据定时导入Redis。

前提:Hive表的数据已导出为竖线分割的文本格式。

文本数据:
在这里插入图片描述

Shell脚本如下:

#!/bin/bash


function Clean(){
incre=0
while read row
do
  #echo "${row}";
  for i in ${row}
  do
    telnum=$(echo "${i}" |awk -F "|" '{print $1}')
    activeType=$(echo "${i}" |awk -F "|" '{print $2}')
    region=$(echo "${i}" |awk -F "|" '{print $3}')
    crowd=$(echo "${i}" |awk -F "|" '{print $4}')
    product=$(echo "${i}" |awk -F "|" '{print $5}')
    department_id=$(echo "${i}" |awk -F "|" '{print $6}')
    #echo "${telnum}"
    #echo "${activeType}"
    #echo "${region}"
    #echo "${crowd}"
    #echo "${product}"
    #echo "${department_id}"
    echo "hmset asiainfo:${incre} telnum ${telnum} activeType ${activeType} region ${region} crowd ${crowd} product ${product} department_id ${department_id}" >> clean1.txt
    echo "EXPIRE asiainfo:${incre} 20" >> clean1.txt
    let incre++
  done
done < hive1.txt
}

function Load_redis(){
todos /root/clean1.txt #转码
time cat /root/clean1.txt | redis-cli --pipe
}


function start(){
Clean
Load_redis
}


start

效果如下:

root@hadoop:~# ./load_redis.sh 
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 15824

real    0m0.076s
user    0m0.003s
sys     0m0.001s

20秒到期后消失:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘先生我在呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值