采坑:java调shell脚本执行hive语句

最近有个需求,就是SpringBoot提供一个web接口给业务方,业务方传入参数调接口,接口去执行hive离线计算,一般可能是说直接用jdbc去连hive执行hive操作,但是这种方案,对于单个任务可能还是可以的,如果对于10个维度的数据统计,那这个代码写起来就坑了。。所以还是想着,把所有hive脚本都放一个shell脚本里,java调接口的时候直接去执行这个脚本,而且不需要等待结果,所以我采取这种方案。

但是,想法是好的,现实很残酷。

问题抛出:java无法调hive脚本无法执行。

这个问题卡了一天了,期间也问了一些朋友,都没遇到过这种需求,所以没有办法,只能自己来搞。卡的原因在哪里呢?如果直接在java代码里调hive脚本执行的话,会出现如下问题:

error.png

百度、谷歌也搜了,都没搜到我要的答案。真是坑。期间我也想过是不是权限的问题、或者是不是没找到hadoop路径之类的问题,都配置上去了,不起作用。。

main.png

所执行的test.sh脚本中,只放了一个清空hive表的语句

test.png

搞了一天,不行,该试的方法都试过了,咋办呢?甚至连直接通过java代码去执行hive语句,但是因为生产环境中是一个离线统计的脚本,脚本语句就大几百行,如果转成java去调用,这工作量可想而知。。而且,脚本中不单单是hive语句的脚本,还有hadoop的脚本,比如删除hdfs某个文件夹、执行某个已经写好的mapreduce任务……等等这些,反正就是通过java好干难(方言:艰难的意思),所以我心想,不行,得解决这个问题。所以我又重新梳理了一下问题,报:“Unable to determine Hadoop version information”,这个错误是在hive启动脚本中的,所以问题还是回到了原来的思路:是不是直接通过java调这个脚本,可能无法加载hadoop环境,既然不能直接调,那间接的是否可以呢?

问题解决:间接法

解决思路:
① Java先调一个脚本,在这个脚本中专门接收参数,并将参数写入指定文件中;
② 然后再写一个shell脚本来实时监控这个参数文件的变化,如果文件内容有变化,则直接调用真正的hive脚本取执行
代码如下:
第一步:创建一个接收参数的脚本acceptParam.sh:

rm -rf /root/single_prod/data/single.txt
echo $1 >> /root/single_prod/data/single.txt
step1.png

第二步:通过java代码去调用,看看能否将参数写入指定的文件中

step2.png

第三步:最重要的一步,写一个实时监控脚本monitor.sh:

step3.png
#!/bin/bash
# $param1 需要监测的文件
# $param2 存放文件md5值,用于判断文件是否更改

param1='/root/single_prod/data/single.txt'
param2='/root/single_prod/data/single.txt.md5'

 if [ ! $param1 ] || [ ! $param2 ] || [ ! -e $param1 ] ; then
    echo "\$1 or \$2 is file"
    exit
 fi
 # 生成md5验证文件
 function creatMd5file()
 {
    md5sum -b $param1 > $param2
 }
 
 # 判断文件是否存在
 if [ ! -e $param2 ] ; then
    creatMd5file $param1 $param2
 fi
 
 while(true) ; do
    # 检测文件是否修改,$?返回1 表示修改, 0表示未修改
    md5sum -c $param2 --status
    
    if [ $? -gt 0 ] ; then
        echo "执行吧"
        for line in $(cat $param1)
        do
           echo "读取文件内容为:"$line
           sh /root/single_prod/test.sh $line >> /root/single_prod/logs/test.log
        done    
    creatMd5file $param1 $param2
    
    fi
    # 每过3秒检测一次
    sleep 3
 done

第四步:验证
[root@master1 single_prod]# nohup sh monitor.sh >> monitor.log &

step4.png

终于大功告成了,真是不容易,搞了一天半。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,966评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,170评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,909评论 0 327
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,959评论 1 268
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,851评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,583评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,956评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,590评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,878评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,892评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,719评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,501评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,957评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,124评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,440评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,003评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,211评论 2 339

推荐阅读更多精彩内容

  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,222评论 0 34
  • hive.ddl.output.format:hive的ddl语句的输出格式,默认是text,纯文本,还有json...
    博弈史密斯阅读 1,913评论 0 6
  • 说明:不少读者反馈,想使用开源组件搭建Hadoop平台,然后再部署Kylin,但是遇到各种问题。这里我为读者部署一...
    大诗兄_zl阅读 2,040评论 0 2
  • 中国人口是第一大国,因为也就造成制度和管理上的一定障碍,在一线城市可能交通规则会比较严格,而相对于三线城市...
    稗子悠悠阅读 106评论 0 0
  • 声声汽笛穿墙进 绵绵乡愁破窗飞 久伫台前 雪花漫,歇风寒 片片思念落不尽 款款深情吹不散 愁容不知其所起 惟愿一生伴君行
    心晴日记阅读 136评论 0 0