hive transform shell脚本运行

来源:互联网 发布:java调用父类方法 编辑:程序博客网 时间:2024/05/21 09:48

hive transform shell脚本运行

hive transform是将脚本嵌入到hive的sql搜索当中。由于在hive中,sql相当于mapreduce,因此相当于在mapreduce的过程中再加入一个处理。

实例分析

  • 需求:在hive中搜索数据,搜索过程中看是否数据在某个集合中。
  • 描述:在hive的sql搜索过程中,对搜索成功的每一条数据,输入到脚本中,然后再输出。
  • 过程:
    1. 将需要的文件添加进去
    2. 执行sql
    3. 执行脚本,脚本中先读取文件,获取集合。然后对标准输入的数据进行处理,如果在集合中就输出
  • 扩展:可以多层嵌套(sql+脚本),直到满足需求
  • 坑:add文件和sql语句必须在一起
  • 代码
HIVE_BIN='your path'${HIVE_BIN} -e "add file transform.py ;add file temp; select transform(p.a) using 'python transform.py' as (b) from (select a  from table1 ) as p" > $DATE;
#coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf-8')if __name__=="__main__":    a_list = []    with open('tmp','r')as r:        a_lines = r.readlines()        for a_line in a_lines:            a_list.append(a_line.strip().split('\t')[0])    #print da_list    for line in sys.stdin:        try:            a = line.strip()            if a in a_list:                print a        except :            continue