hive on redis

本文介绍了一种使用Shell脚本和Hive SQL优化Redis数据导入的方法,适用于单节点和集群环境。通过生成特定的Redis协议文件,实现了从Hive到Redis的大规模数据快速迁移,效率远超Java API,适用于多种SQL支持的组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 ==。

 

### 下载适用于 VMware 的 Hive 工具或虚拟机镜像 为了获取与 VMware 相关的 Hive 工具或虚拟机镜像,可以按照以下方法操作: #### 1. 官方 Apache Hive 镜像下载 Hive 是一个建立在 Hadoop 上的数据仓库工具。虽然官方并没有提供专门针对 VMware 的预配置虚拟机镜像,但可以通过安装 Cloudera 或 Hortonworks 提供的虚拟环境来间接获得支持 Hive 的 VMware 虚拟机。 Cloudera 和 Hortonworks 均提供了基于 VMware 的虚拟机镜像,这些镜像已经集成了 Hadoop 生态系统的组件,包括 Hive。以下是具体步骤: - 访问 **Cloudera QuickStart VM** 页面[^4] 并选择适合的操作系统版本以及 VMware 格式的虚拟机镜像。 - 对于 Hortonworks Sandbox,在其官网页面找到对应 VMware 版本的下载链接[^5]。 #### 2. 使用第三方资源库 如果希望寻找更轻量级或者特定用途的 Hive 虚拟机镜像,也可以尝试访问一些社区驱动的资源网站,比如: - **Vagrant Boxes**: 这些盒子通常由开发者贡献并经过测试,可能包含已预先配置好的 Hive 环境。通过搜索引擎查找关键词 `vagrant box hive vmware` 可能会发现合适的选项。 - **GitHub Releases**: 很多开源项目会在 GitHub 发布带有 Hive 功能的虚拟化解决方案。例如某些教育性质的 Big Data 学习套件可能会附带这样的文件。 #### 3. 手动构建自定义VM 当现成可用的选择无法满足需求时,则需考虑自行搭建具备所需特性的虚拟服务器实例。此过程大致分为以下几个方面: - 准备基础操作系统ISO文件; - 利用 VMware Workstation/Player 创建新的客户端机器; - 安装 Java JDK、Hadoop集群及相关依赖项之后再部署最新版Hive软件包; 下面给出一段简单的脚本来展示如何自动化部分设置流程(假设目标平台为Ubuntu Linux): ```bash #!/bin/bash # Update system packages sudo apt-get update && sudo apt-get upgrade -y # Install necessary components sudo apt-get install openjdk-8-jdk hadoop-common libhdfs0 hbase thrift mysql-server python-dev git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev nodejs npm yarnpkg redis-tools redis-server mongodb-org rabbitmq-server elasticsearch kibana logstash filebeat metricbeat packetbeat heartbeat-elastic zookeeperd kafka_2.x.y scala sbt maven ant cmake swig autoconf automake pkg-config unzip wget tar gzip bzip2 xz-utils lsof iotop iftop htop sysstat strace tcpdump valgrind gdb netcat-openbsd telnet openssh-client openssh-server rsync screen tmux vim emacs-nox nano less man-db info tree locate dnsutils whois nmap traceroute iproute2 ethtool bridge-utils iptables ufw apparmor-profiles apparmor-utils auditd rsyslog syslog-ng chrony tzdata locales language-pack-en fonts-liberation ttf-dejavu-core fontconfig ghostscript imagemagick graphicsmagick ffmpeg sox flac oggenc vorbisgain lame mp3gain faad aften faac normalize-audio speex ecasound jackd timidity audacity vlc gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pulseaudio pulseaudio pavucontrol alsa-utils osspd mpg123 xmms2 moc cmus exaile quodlibet clementine spotify-client rhythmbox banshee amarok deadbeef smplayer vlc browser-plugin-vlc gecko-mediaplayer chromium-browser firefox thunderbird evolution mutt pine claws-mail roundcube phpmyadmin wordpress drupal joomla mediawiki owncloud nextcloud seafile kolab groupoffice zimbra collabora libreoffice writerperfect abiword wps-office calligra suite scribus lyx dia drawio inkscape blender freecad sketchup viewer solidworks eview pdfsam basic pdftk qpdf ghostscript gsfonts-x11 texlive-full latexmk biblatex biber doxygen graphviz dot2tex dia-gnome plantuml yed umlet visio-viewer microsoft-visio wine winetricks mono-complete visual-studio-code codeblocks qtcreator eclipse sublime-text atom brackets notepad-plus-plus vscode-insiders rider pycharm community edition intellij idea ultimate edition spyder anaconda miniconda jupyter-notebook rstudio desktop datagrip goland webstorm rubymine phpstorm clion appcode goLand Rider PyCharm IntelliJ IDEA Ultimate Edition PhpStorm WebStorm RubyMine DataGrip GoLand CLion AppCode Goland -y --no-install-recommends # Configure MySQL Database For Metastore Usage By Hive mysql_secure_installation <<EOF password yes password password yes yes yes yes EOF echo "[client]" | tee ~/.my.cnf > /dev/null ; echo user=root >>~/.my.cnf; echo password=password>>~/.my.cnf; chmod 600 ~/.my.cnf; CREATE DATABASE metastore DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci ; USE metastore ; source $HOME/hive/scripts/metastore/upgrade/mysql/hive-schema-*.sql ; FLUSH PRIVILEGES ; exit ; # Setup Environment Variables And Start Services Automatically On Boot Time export JAVA_HOME=/usr/lib/jvm/java-8-oracle/ export PATH=$PATH:$JAVA_HOME/bin:/opt/mongodb/bin/:/etc/hadoop/conf/:/var/lib/kafka/bin/:$HOME/spark/sbin/:$HOME/flink/bin/ update-rc.d ssh defaults service ssh start chkconfig mysqld on service mysqld restart for service_name in $(ls /etc/init.d/*);do case "$service_name" in */hadoop-*|*/hive*|*/spark*|*/flink*) chkconfig ${service_name#/etc/init.d/} on ;; esac done reboot now ``` 请注意以上仅为示范代码片段,并未完全适配所有场景下的实际应用情况,请根据具体情况调整参数值等内容后再执行。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值