hive on redis

1.单节点redis

kk.sh

redis-cli -h 192.168.0.1 -p 6379 <<EOF

DEL kk_redis

exit

EOF

hive -f /home/kk/kk_redis.sql | grep -v "^WARN:" > /home/kk/kk_redis.txt

unix2dos /home/kk/kk_redis.txt

cat /home/kk/kk_redis.txt | grep -v "^NULL:" | redis-cli -h 192.168.0.1 -p 6379 --pipe

kk_redis.sql  核心生成redis协议的文件

set mapreduce.job.queuename=root.kk;

 

SELECT CONCAT(

"*4\r\n",

'$4\r\n',

'HSET\r\n',

'$', LENGTH('kk_redis'), '\r\n',

'kk_redis', '\r\n',

'$', LENGTH(key), '\r\n',

key, '\r\n',

'$', LENGTH(value), '\r\n',

value, '\r\n'

)

FROM (

SELECT id as key ,concat('{','"name":"',name,'",','"age":"',age,'"}') as value FROM kk_redis

) AS t;

 

 

2.集群方式

本身是不支持 redis-cli -c 模式导入数据的,但入数可以用主节点方式 不过不确定那个主节点可用。

如果方式可轻松玩起来

 

取能用的节点,$1为传入的 key,输出为 能用的节点。

gethost.sh

host=''

a=`redis-cli -h 192.168.0.1 -p 7000 <<EOF

DEL $1

exit

EOF`

result=$(echo $a | grep "MOVED")

if [[ -z "$result" ]];

then

host='redis-cli -h 192.168.0.1 -p 7000'

fi

 

b=`redis-cli -h 192.168.0.2 -p 7001 <<EOF

DEL $1

exit

EOF`

result=$(echo $b | grep "MOVED")

if [[ -z $result ]];

then

host='redis-cli -h 192.168.0.2 -p 7001'

fi

 

c=`redis-cli -h 192.168.0.3 -p 7002 <<EOF

DEL $1

exit

EOF`

result=$(echo $c | grep "MOVED")

if [[ -z $result ]];

then

host='redis-cli -h 192.168.0.3 -p 7002'

fi

 

echo $host

 

入数据 shell :

#!/bin/bash

a=`sh /home/kk/gethost.sh  kk_redis`

hive -f /home/kk/kk_redis.sql | grep -v "^WARN:" > /home/kk/kk_redis.txt

unix2dos /home/kk/kk_redis.txt

cat /home/kk/kk_redis.txt | grep -v "^NULL:" | $a --pipe

echo 'import data to product culster '$a' success'

 

kk_redis.sql 如上。

如上测试 单节点和集群模式都 分钟内入数百w级,相对于java api 快的太多。当然能支持hive,其他的支持sql的组件一样可以适用,如mysql,oracle,impala,kylin ==。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值